1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file. 4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochpackage org.chromium.android_webview.test; 6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport android.graphics.Picture; 8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport android.os.Handler; 9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport android.os.Looper; 10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport android.test.suitebuilder.annotation.SmallTest; 11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.android_webview.AwContentsClientCallbackHelper; 13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.android_webview.test.TestAwContentsClient.OnDownloadStartHelper; 14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.android_webview.test.TestAwContentsClient.OnReceivedLoginRequestHelper; 15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.android_webview.test.TestAwContentsClient.PictureListenerHelper; 16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.base.test.util.Feature; 17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.content.browser.test.util.CallbackHelper; 18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper; 19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper; 20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochimport java.util.concurrent.Callable; 22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch/** 24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch * Test suite for AwContentsClientCallbackHelper. 25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch */ 26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochpublic class AwContentsClientCallbackHelperTest extends AwTestBase { 27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch /** 28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch * Callback helper for OnLoadedResource. 29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch */ 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public static class OnLoadResourceHelper extends CallbackHelper { 31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private String mLastLoadedResource; 32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public String getLastLoadedResource() { 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assert getCallCount() > 0; 35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return mLastLoadedResource; 36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void notifyCalled(String url) { 39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mLastLoadedResource = url; 40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch notifyCalled(); 41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch /** 45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch * TestAwContentsClient extended with OnLoadResourceHelper. 46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch */ 47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public static class TestAwContentsClient 48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch extends org.chromium.android_webview.test.TestAwContentsClient { 49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private final OnLoadResourceHelper mOnLoadResourceHelper; 51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public TestAwContentsClient() { 53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch super(); 54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mOnLoadResourceHelper = new OnLoadResourceHelper(); 55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public OnLoadResourceHelper getOnLoadResourceHelper() { 58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return mOnLoadResourceHelper; 59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Override 62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void onLoadResource(String url) { 63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mOnLoadResourceHelper.notifyCalled(url); 64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 66a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 67a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final int PICTURE_TIMEOUT = 5000; 68a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String TEST_URL = "www.example.com"; 69a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String REALM = "www.example.com"; 70a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String ACCOUNT = "account"; 71a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String ARGS = "args"; 72a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String USER_AGENT = "userAgent"; 73a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String CONTENT_DISPOSITION = "contentDisposition"; 74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String MIME_TYPE = "mimeType"; 75a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final int CONTENT_LENGTH = 42; 76a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 77a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final float NEW_SCALE = 1.0f; 78a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final float OLD_SCALE = 2.0f; 79a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final int ERROR_CODE = 2; 80a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static final String ERROR_MESSAGE = "A horrible thing has occurred!"; 81a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 82a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private TestAwContentsClient mContentsClient; 83a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private AwContentsClientCallbackHelper mClientHelper; 84a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private Looper mLooper; 85a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 86a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Override 87a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch protected void setUp() throws Exception { 88a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch super.setUp(); 89a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mLooper = Looper.getMainLooper(); 90a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mContentsClient = new TestAwContentsClient(); 91a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper = new AwContentsClientCallbackHelper(mLooper, mContentsClient); 92a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 93a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 94a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Feature({"AndroidWebView"}) 95a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @SmallTest 96a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void testOnLoadResource() throws Exception { 97a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OnLoadResourceHelper loadResourceHelper = mContentsClient.getOnLoadResourceHelper(); 98a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 99a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int onLoadResourceCount = loadResourceHelper.getCallCount(); 100a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnLoadResource(TEST_URL); 101a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch loadResourceHelper.waitForCallback(onLoadResourceCount); 102a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(TEST_URL, loadResourceHelper.getLastLoadedResource()); 103a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 104a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 105a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Feature({"AndroidWebView"}) 106a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @SmallTest 107a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void testOnPageStarted() throws Exception { 108a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OnPageStartedHelper pageStartedHelper = mContentsClient.getOnPageStartedHelper(); 109a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 110a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int onPageStartedCount = pageStartedHelper.getCallCount(); 111a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnPageStarted(TEST_URL); 112a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch pageStartedHelper.waitForCallback(onPageStartedCount); 113a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(TEST_URL, pageStartedHelper.getUrl()); 114a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 115a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 116a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Feature({"AndroidWebView"}) 117a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @SmallTest 118a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void testOnDownloadStart() throws Exception { 119a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OnDownloadStartHelper downloadStartHelper = mContentsClient.getOnDownloadStartHelper(); 120a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 121a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int onDownloadStartCount = downloadStartHelper.getCallCount(); 122a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnDownloadStart(TEST_URL, USER_AGENT, CONTENT_DISPOSITION, 123a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch MIME_TYPE, CONTENT_LENGTH); 124a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch downloadStartHelper.waitForCallback(onDownloadStartCount); 125a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(TEST_URL, downloadStartHelper.getUrl()); 126a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(USER_AGENT, downloadStartHelper.getUserAgent()); 127a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(CONTENT_DISPOSITION, downloadStartHelper.getContentDisposition()); 128a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(MIME_TYPE, downloadStartHelper.getMimeType()); 129a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(CONTENT_LENGTH, downloadStartHelper.getContentLength()); 130a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 131a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 132a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Feature({"AndroidWebView"}) 133a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @SmallTest 134a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void testOnNewPicture() throws Exception { 135a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch final PictureListenerHelper pictureListenerHelper = 136a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mContentsClient.getPictureListenerHelper(); 137a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 138a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch final Picture thePicture = new Picture(); 139a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 140a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch final Callable<Picture> pictureProvider = new Callable<Picture>() { 141a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Override 142a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public Picture call() { 143a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return thePicture; 144a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 145a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch }; 146a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 147a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // AwContentsClientCallbackHelper rate limits photo callbacks so two posts in close 148a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // succession should only result in one callback. 149a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch final int onNewPictureCount = pictureListenerHelper.getCallCount(); 150a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // To trip the rate limiting the second postNewPicture call needs to happen 151a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // before mLooper processes the first. To do this we run both posts as a single block 152a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // and we do it in the thread that is processes the callbacks (mLooper). 153a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch Handler mainHandler = new Handler(mLooper); 154a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch Runnable postPictures = new Runnable() { 155a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Override 156a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void run() { 157a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnNewPicture(pictureProvider); 158a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnNewPicture(pictureProvider); 159a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 160a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch }; 161a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mainHandler.post(postPictures); 162a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 163a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // We want to check that one and only one callback is fired, 164a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // First we wait for the first call back to complete, this ensures that both posts have 165a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // finished. 166a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch pictureListenerHelper.waitForCallback(onNewPictureCount); 167a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 168a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Then we post a runnable on the callback handler thread. Since both posts have happened 169a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // and the first callback has happened a second callback (if it exists) must be 170a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // in the queue before this runnable. 171a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch getInstrumentation().runOnMainSync(new Runnable() { 172a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Override 173a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void run() { 174a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 175a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch }); 176a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 177a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // When that runnable has finished we assert that one and only on callback happened. 178a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(thePicture, pictureListenerHelper.getPicture()); 179a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(onNewPictureCount + 1, pictureListenerHelper.getCallCount()); 180a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 181a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 182a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Feature({"AndroidWebView"}) 183a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @SmallTest 184a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void testOnReceivedLoginRequest() throws Exception { 185a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OnReceivedLoginRequestHelper receivedLoginRequestHelper = 186a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mContentsClient.getOnReceivedLoginRequestHelper(); 187a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 188a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int onReceivedLoginRequestCount = receivedLoginRequestHelper.getCallCount(); 189a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnReceivedLoginRequest(REALM, ACCOUNT, ARGS); 190a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch receivedLoginRequestHelper.waitForCallback(onReceivedLoginRequestCount); 191a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(REALM, receivedLoginRequestHelper.getRealm()); 192a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(ACCOUNT, receivedLoginRequestHelper.getAccount()); 193a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(ARGS, receivedLoginRequestHelper.getArgs()); 194a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 195a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 196a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Feature({"AndroidWebView"}) 197a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @SmallTest 198a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void testOnReceivedError() throws Exception { 199a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OnReceivedErrorHelper receivedErrorHelper = 200a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mContentsClient.getOnReceivedErrorHelper(); 201a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 202a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int onReceivedErrorCount = receivedErrorHelper.getCallCount(); 203a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnReceivedError(ERROR_CODE, ERROR_MESSAGE, TEST_URL); 204a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch receivedErrorHelper.waitForCallback(onReceivedErrorCount); 205a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(ERROR_CODE, receivedErrorHelper.getErrorCode()); 206a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(ERROR_MESSAGE, receivedErrorHelper.getDescription()); 207a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(TEST_URL, receivedErrorHelper.getFailingUrl()); 208a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 209a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 210a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @Feature({"AndroidWebView"}) 211a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch @SmallTest 212a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public void testOnScaleChangedScaled() throws Exception { 213a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch TestAwContentsClient.OnScaleChangedHelper scaleChangedHelper = 214a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mContentsClient.getOnScaleChangedHelper(); 215a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 216a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int onScaleChangeCount = scaleChangedHelper.getCallCount(); 217a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch mClientHelper.postOnScaleChangedScaled(OLD_SCALE, NEW_SCALE); 218a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scaleChangedHelper.waitForCallback(onScaleChangeCount); 219a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(OLD_SCALE, scaleChangedHelper.getOldScale()); 220a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch assertEquals(NEW_SCALE, scaleChangedHelper.getNewScale()); 221a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 222a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} 223