TestAwContentsClient.java revision 010d83a9304c5a91596085d917d248abff47903a
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package org.chromium.android_webview.test;
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7a3f7b4e666c476898878fa745f637129375cd889Ben Murdochimport android.graphics.Picture;
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.webkit.ConsoleMessage;
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.base.ThreadUtils;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.CallbackHelper;
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper;
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)/**
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * AwContentsClient subclass used for testing.
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) */
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)public class TestAwContentsClient extends NullContentsClient {
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private String mUpdatedTitle;
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private final OnPageStartedHelper mOnPageStartedHelper;
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private final OnPageFinishedHelper mOnPageFinishedHelper;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private final OnReceivedErrorHelper mOnReceivedErrorHelper;
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    private final OnDownloadStartHelper mOnDownloadStartHelper;
26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    private final OnReceivedLoginRequestHelper mOnReceivedLoginRequestHelper;
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private final OnEvaluateJavaScriptResultHelper mOnEvaluateJavaScriptResultHelper;
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private final AddMessageToConsoleHelper mAddMessageToConsoleHelper;
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    private final OnScaleChangedHelper mOnScaleChangedHelper;
30a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    private final PictureListenerHelper mPictureListenerHelper;
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    private final ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public TestAwContentsClient() {
341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        super(ThreadUtils.getUiThreadLooper());
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageStartedHelper = new OnPageStartedHelper();
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageFinishedHelper = new OnPageFinishedHelper();
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnReceivedErrorHelper = new OnReceivedErrorHelper();
38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        mOnDownloadStartHelper = new OnDownloadStartHelper();
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        mOnReceivedLoginRequestHelper = new OnReceivedLoginRequestHelper();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnEvaluateJavaScriptResultHelper = new OnEvaluateJavaScriptResultHelper();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper = new AddMessageToConsoleHelper();
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mOnScaleChangedHelper = new OnScaleChangedHelper();
43a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        mPictureListenerHelper = new PictureListenerHelper();
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        mShouldOverrideUrlLoadingHelper = new ShouldOverrideUrlLoadingHelper();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnPageStartedHelper getOnPageStartedHelper() {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnPageStartedHelper;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnPageFinishedHelper getOnPageFinishedHelper() {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnPageFinishedHelper;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnReceivedErrorHelper getOnReceivedErrorHelper() {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnReceivedErrorHelper;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public OnDownloadStartHelper getOnDownloadStartHelper() {
60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        return mOnDownloadStartHelper;
61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public OnReceivedLoginRequestHelper getOnReceivedLoginRequestHelper() {
64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        return mOnReceivedLoginRequestHelper;
65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
66a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnEvaluateJavaScriptResultHelper;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    public ShouldOverrideUrlLoadingHelper getShouldOverrideUrlLoadingHelper() {
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        return mShouldOverrideUrlLoadingHelper;
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public AddMessageToConsoleHelper getAddMessageToConsoleHelper() {
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mAddMessageToConsoleHelper;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
80010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static class OnScaleChangedHelper extends CallbackHelper {
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        private float mPreviousScale;
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        private float mCurrentScale;
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public void notifyCalled(float oldScale, float newScale) {
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mPreviousScale = oldScale;
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mCurrentScale = newScale;
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            super.notifyCalled();
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
90a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
91a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public float getOldScale() {
92a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mPreviousScale;
93a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
94a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
95a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public float getNewScale() {
96a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mCurrentScale;
97a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
98a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public float getLastScaleRatio() {
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            assert getCallCount() > 0;
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return mCurrentScale / mPreviousScale;
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public OnScaleChangedHelper getOnScaleChangedHelper() {
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mOnScaleChangedHelper;
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
109a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    public PictureListenerHelper getPictureListenerHelper() {
110a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        return mPictureListenerHelper;
111a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    }
112a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @Override
114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    public void onReceivedTitle(String title) {
1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mUpdatedTitle = title;
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public String getUpdatedTitle() {
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mUpdatedTitle;
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onPageStarted(String url) {
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageStartedHelper.notifyCalled(url);
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onPageFinished(String url) {
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageFinishedHelper.notifyCalled(url);
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onReceivedError(int errorCode, String description, String failingUrl) {
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl);
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
137a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    /**
138a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     * CallbackHelper for OnDownloadStart.
139a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     */
140a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public static class OnDownloadStartHelper extends CallbackHelper {
141a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mUrl;
142a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mUserAgent;
143a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mContentDisposition;
144a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mMimeType;
145a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        long mContentLength;
146a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
147a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getUrl() {
148a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
149a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mUrl;
150a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
151a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
152a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getUserAgent() {
153a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
154a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mUserAgent;
155a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
156a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
157a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getContentDisposition() {
158a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
159a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mContentDisposition;
160a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
161a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
162a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getMimeType() {
163a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
164a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mMimeType;
165a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
166a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
167a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public long getContentLength() {
168a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
169a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mContentLength;
170a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
171a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
172a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public void notifyCalled(String url, String userAgent, String contentDisposition,
173a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                String mimeType, long contentLength) {
174a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mUrl = url;
175a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mUserAgent = userAgent;
176a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mContentDisposition = contentDisposition;
177a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mMimeType = mimeType;
178a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mContentLength = contentLength;
179a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            notifyCalled();
180a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
181a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
182a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
183a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    @Override
184a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public void onDownloadStart(String url,
185a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            String userAgent,
186a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            String contentDisposition,
187a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            String mimeType,
188a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            long contentLength) {
189a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        getOnDownloadStartHelper().notifyCalled(url, userAgent, contentDisposition, mimeType,
190a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                contentLength);
191a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
192a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
193a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    /**
194a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     * CallbackHelper for OnReceivedLoginRequest.
195a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     */
196a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public static class OnReceivedLoginRequestHelper extends CallbackHelper {
197a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mRealm;
198a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mAccount;
199a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mArgs;
200a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
201a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getRealm() {
202a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
203a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mRealm;
204a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
205a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
206a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getAccount() {
207a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
208a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mAccount;
209a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
210a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
211a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getArgs() {
212a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
213a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mArgs;
214a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
215a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
216a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public void notifyCalled(String realm, String account, String args) {
217a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mRealm = realm;
218a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mAccount = account;
219a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mArgs = args;
220a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            notifyCalled();
221a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
222a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
223a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
224a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    @Override
225a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public void onReceivedLoginRequest(String realm, String account, String args) {
226a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        getOnReceivedLoginRequestHelper().notifyCalled(realm, account, args);
227a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
228a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mAddMessageToConsoleHelper.notifyCalled(consoleMessage.messageLevel().ordinal(),
2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                consoleMessage.message(), consoleMessage.lineNumber(), consoleMessage.sourceId());
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return false;
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
236010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
237010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
238010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static class AddMessageToConsoleHelper extends CallbackHelper {
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private int mLevel;
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private String mMessage;
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private int mLineNumber;
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private String mSourceId;
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public int getLevel() {
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mLevel;
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public String getMessage() {
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mMessage;
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public int getLineNumber() {
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mLineNumber;
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public String getSourceId() {
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mSourceId;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        void notifyCalled(int level, String message, int lineNumer, String sourceId) {
2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mLevel = level;
2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mMessage = message;
2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mLineNumber = lineNumer;
2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mSourceId = sourceId;
2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            notifyCalled();
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @Override
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public void onScaleChangedScaled(float oldScale, float newScale) {
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mOnScaleChangedHelper.notifyCalled(oldScale, newScale);
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
278a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
279010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
280010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
281010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
282a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    public static class PictureListenerHelper extends CallbackHelper {
283a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        // Generally null, depending on |invalidationOnly| in enableOnNewPicture()
284a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        private Picture mPicture;
285a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
286a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        public Picture getPicture() {
287a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            assert getCallCount() > 0;
288a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            return mPicture;
289a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        }
290a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
291a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        void notifyCalled(Picture picture) {
292a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            mPicture = picture;
293a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            notifyCalled();
294a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        }
295a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    }
296a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
297a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    @Override
298a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    public void onNewPicture(Picture picture) {
299a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        mPictureListenerHelper.notifyCalled(picture);
300a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    }
3015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
302010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
303010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
304010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
3055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    public static class ShouldOverrideUrlLoadingHelper extends CallbackHelper {
3065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        private String mShouldOverrideUrlLoadingUrl;
3075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        private String mPreviousShouldOverrideUrlLoadingUrl;
3085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        private boolean mShouldOverrideUrlLoadingReturnValue = false;
3095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        void setShouldOverrideUrlLoadingUrl(String url) {
3105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingUrl = url;
3115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        void setPreviousShouldOverrideUrlLoadingUrl(String url) {
3135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mPreviousShouldOverrideUrlLoadingUrl = url;
3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        void setShouldOverrideUrlLoadingReturnValue(boolean value) {
3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingReturnValue = value;
3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public String getShouldOverrideUrlLoadingUrl() {
3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            assert getCallCount() > 0;
3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            return mShouldOverrideUrlLoadingUrl;
3215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public String getPreviousShouldOverrideUrlLoadingUrl() {
3235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            assert getCallCount() > 1;
3245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            return mPreviousShouldOverrideUrlLoadingUrl;
3255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public boolean getShouldOverrideUrlLoadingReturnValue() {
3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            return mShouldOverrideUrlLoadingReturnValue;
3285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public void notifyCalled(String url) {
3305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mPreviousShouldOverrideUrlLoadingUrl = mShouldOverrideUrlLoadingUrl;
3315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingUrl = url;
3325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            notifyCalled();
3335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
3355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
3365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    @Override
3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    public boolean shouldOverrideUrlLoading(String url) {
3385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        super.shouldOverrideUrlLoading(url);
3395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        boolean returnValue =
3405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingReturnValue();
3415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        mShouldOverrideUrlLoadingHelper.notifyCalled(url);
3425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        return returnValue;
3435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
345