TestAwContentsClient.java revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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;
326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    private final DoUpdateVisitedHistoryHelper mDoUpdateVisitedHistoryHelper;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public TestAwContentsClient() {
351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        super(ThreadUtils.getUiThreadLooper());
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageStartedHelper = new OnPageStartedHelper();
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageFinishedHelper = new OnPageFinishedHelper();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnReceivedErrorHelper = new OnReceivedErrorHelper();
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        mOnDownloadStartHelper = new OnDownloadStartHelper();
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        mOnReceivedLoginRequestHelper = new OnReceivedLoginRequestHelper();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnEvaluateJavaScriptResultHelper = new OnEvaluateJavaScriptResultHelper();
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper = new AddMessageToConsoleHelper();
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mOnScaleChangedHelper = new OnScaleChangedHelper();
44a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        mPictureListenerHelper = new PictureListenerHelper();
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        mShouldOverrideUrlLoadingHelper = new ShouldOverrideUrlLoadingHelper();
466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        mDoUpdateVisitedHistoryHelper = new DoUpdateVisitedHistoryHelper();
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnPageStartedHelper getOnPageStartedHelper() {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnPageStartedHelper;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnPageFinishedHelper getOnPageFinishedHelper() {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnPageFinishedHelper;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnReceivedErrorHelper getOnReceivedErrorHelper() {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnReceivedErrorHelper;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public OnDownloadStartHelper getOnDownloadStartHelper() {
62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        return mOnDownloadStartHelper;
63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public OnReceivedLoginRequestHelper getOnReceivedLoginRequestHelper() {
66a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        return mOnReceivedLoginRequestHelper;
67a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
68a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnEvaluateJavaScriptResultHelper;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    public ShouldOverrideUrlLoadingHelper getShouldOverrideUrlLoadingHelper() {
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        return mShouldOverrideUrlLoadingHelper;
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public AddMessageToConsoleHelper getAddMessageToConsoleHelper() {
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mAddMessageToConsoleHelper;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public DoUpdateVisitedHistoryHelper getDoUpdateVisitedHistoryHelper() {
826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        return mDoUpdateVisitedHistoryHelper;
836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    }
846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static class OnScaleChangedHelper extends CallbackHelper {
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        private float mPreviousScale;
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        private float mCurrentScale;
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public void notifyCalled(float oldScale, float newScale) {
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mPreviousScale = oldScale;
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mCurrentScale = newScale;
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            super.notifyCalled();
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
96a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
97a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public float getOldScale() {
98a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mPreviousScale;
99a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
100a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
101a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public float getNewScale() {
102a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mCurrentScale;
103a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
104a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        public float getLastScaleRatio() {
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            assert getCallCount() > 0;
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            return mCurrentScale / mPreviousScale;
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public OnScaleChangedHelper getOnScaleChangedHelper() {
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mOnScaleChangedHelper;
1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
115a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    public PictureListenerHelper getPictureListenerHelper() {
116a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        return mPictureListenerHelper;
117a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    }
118a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @Override
120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    public void onReceivedTitle(String title) {
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mUpdatedTitle = title;
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public String getUpdatedTitle() {
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        return mUpdatedTitle;
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onPageStarted(String url) {
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageStartedHelper.notifyCalled(url);
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onPageFinished(String url) {
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageFinishedHelper.notifyCalled(url);
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onReceivedError(int errorCode, String description, String failingUrl) {
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl);
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
143a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    /**
144a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     * CallbackHelper for OnDownloadStart.
145a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     */
146a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public static class OnDownloadStartHelper extends CallbackHelper {
147a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mUrl;
148a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mUserAgent;
149a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mContentDisposition;
150a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mMimeType;
151a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        long mContentLength;
152a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
153a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getUrl() {
154a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
155a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mUrl;
156a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
157a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
158a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getUserAgent() {
159a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
160a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mUserAgent;
161a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
162a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
163a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getContentDisposition() {
164a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
165a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mContentDisposition;
166a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
167a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
168a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getMimeType() {
169a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
170a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mMimeType;
171a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
172a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
173a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public long getContentLength() {
174a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
175a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mContentLength;
176a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
177a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
178a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public void notifyCalled(String url, String userAgent, String contentDisposition,
179a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                String mimeType, long contentLength) {
180a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mUrl = url;
181a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mUserAgent = userAgent;
182a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mContentDisposition = contentDisposition;
183a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mMimeType = mimeType;
184a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mContentLength = contentLength;
185a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            notifyCalled();
186a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
187a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
188a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
189a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    @Override
190a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public void onDownloadStart(String url,
191a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            String userAgent,
192a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            String contentDisposition,
193a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            String mimeType,
194a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            long contentLength) {
195a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        getOnDownloadStartHelper().notifyCalled(url, userAgent, contentDisposition, mimeType,
196a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                contentLength);
197a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
198a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
199a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    /**
200a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     * CallbackHelper for OnReceivedLoginRequest.
201a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch     */
202a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public static class OnReceivedLoginRequestHelper extends CallbackHelper {
203a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mRealm;
204a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mAccount;
205a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        private String mArgs;
206a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
207a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getRealm() {
208a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
209a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mRealm;
210a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
211a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
212a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getAccount() {
213a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
214a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mAccount;
215a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
216a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
217a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public String getArgs() {
218a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            assert getCallCount() > 0;
219a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            return mArgs;
220a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
221a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
222a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        public void notifyCalled(String realm, String account, String args) {
223a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mRealm = realm;
224a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mAccount = account;
225a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            mArgs = args;
226a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch            notifyCalled();
227a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        }
228a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
229a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
230a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    @Override
231a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    public void onReceivedLoginRequest(String realm, String account, String args) {
232a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch        getOnReceivedLoginRequestHelper().notifyCalled(realm, account, args);
233a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    }
234a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mAddMessageToConsoleHelper.notifyCalled(consoleMessage.messageLevel().ordinal(),
2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                consoleMessage.message(), consoleMessage.lineNumber(), consoleMessage.sourceId());
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return false;
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
242010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
243010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
244010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public static class AddMessageToConsoleHelper extends CallbackHelper {
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private int mLevel;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private String mMessage;
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private int mLineNumber;
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private String mSourceId;
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public int getLevel() {
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mLevel;
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public String getMessage() {
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mMessage;
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public int getLineNumber() {
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mLineNumber;
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public String getSourceId() {
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mSourceId;
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        void notifyCalled(int level, String message, int lineNumer, String sourceId) {
2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mLevel = level;
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mMessage = message;
2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mLineNumber = lineNumer;
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            mSourceId = sourceId;
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            notifyCalled();
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        }
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    @Override
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    public void onScaleChangedScaled(float oldScale, float newScale) {
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        mOnScaleChangedHelper.notifyCalled(oldScale, newScale);
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
284a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
285010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
286010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
287010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
288a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    public static class PictureListenerHelper extends CallbackHelper {
289a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        // Generally null, depending on |invalidationOnly| in enableOnNewPicture()
290a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        private Picture mPicture;
291a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
292a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        public Picture getPicture() {
293a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            assert getCallCount() > 0;
294a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            return mPicture;
295a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        }
296a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
297a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        void notifyCalled(Picture picture) {
298a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            mPicture = picture;
299a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch            notifyCalled();
300a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        }
301a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    }
302a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
303a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    @Override
304a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    public void onNewPicture(Picture picture) {
305a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch        mPictureListenerHelper.notifyCalled(picture);
306a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch    }
3075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
308010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    /**
309010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     * Callback helper for onScaleChangedScaled.
310010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)     */
3115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    public static class ShouldOverrideUrlLoadingHelper extends CallbackHelper {
3125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        private String mShouldOverrideUrlLoadingUrl;
3135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        private String mPreviousShouldOverrideUrlLoadingUrl;
3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        private boolean mShouldOverrideUrlLoadingReturnValue = false;
3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        void setShouldOverrideUrlLoadingUrl(String url) {
3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingUrl = url;
3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        void setPreviousShouldOverrideUrlLoadingUrl(String url) {
3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mPreviousShouldOverrideUrlLoadingUrl = url;
3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        void setShouldOverrideUrlLoadingReturnValue(boolean value) {
3225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingReturnValue = value;
3235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public String getShouldOverrideUrlLoadingUrl() {
3255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            assert getCallCount() > 0;
3265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            return mShouldOverrideUrlLoadingUrl;
3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public String getPreviousShouldOverrideUrlLoadingUrl() {
3295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            assert getCallCount() > 1;
3305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            return mPreviousShouldOverrideUrlLoadingUrl;
3315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public boolean getShouldOverrideUrlLoadingReturnValue() {
3335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            return mShouldOverrideUrlLoadingReturnValue;
3345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        public void notifyCalled(String url) {
3365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mPreviousShouldOverrideUrlLoadingUrl = mShouldOverrideUrlLoadingUrl;
3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingUrl = url;
3385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            notifyCalled();
3395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        }
3405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
3415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
3425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    @Override
3435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    public boolean shouldOverrideUrlLoading(String url) {
3445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        super.shouldOverrideUrlLoading(url);
3455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        boolean returnValue =
3465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)            mShouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingReturnValue();
3475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        mShouldOverrideUrlLoadingHelper.notifyCalled(url);
3485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        return returnValue;
3495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    }
3506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
3516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
3526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    /**
3536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     * Callback helper for doUpdateVisitedHistory.
3546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)     */
3556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public static class DoUpdateVisitedHistoryHelper extends CallbackHelper {
3566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        String mUrl;
3576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        boolean mIsReload;
3586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
3596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        public String getUrl() {
3606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            assert getCallCount() > 0;
3616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            return mUrl;
3626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        }
3636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
3646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        public boolean getIsReload() {
3656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            assert getCallCount() > 0;
3666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            return mIsReload;
3676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        }
3686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
3696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        public void notifyCalled(String url, boolean isReload) {
3706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            mUrl = url;
3716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            mIsReload = isReload;
3726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            notifyCalled();
3736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        }
3746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    }
3756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
3766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    @Override
3776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    public void doUpdateVisitedHistory(String url, boolean isReload) {
3786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        getDoUpdateVisitedHistoryHelper().notifyCalled(url, isReload);
3796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    }
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
381