TestAwContentsClient.java revision 1e9bf3e0803691d0a228da41fc608347b6db4340
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 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) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.CallbackHelper; 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper; 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)import org.chromium.base.ThreadUtils; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestAwContentsClient extends NullContentsClient { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private String mUpdatedTitle; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final OnPageStartedHelper mOnPageStartedHelper; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final OnPageFinishedHelper mOnPageFinishedHelper; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final OnReceivedErrorHelper mOnReceivedErrorHelper; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final OnEvaluateJavaScriptResultHelper mOnEvaluateJavaScriptResultHelper; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final AddMessageToConsoleHelper mAddMessageToConsoleHelper; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final OnScaleChangedHelper mOnScaleChangedHelper; 25a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private final PictureListenerHelper mPictureListenerHelper; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public TestAwContentsClient() { 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) super(ThreadUtils.getUiThreadLooper()); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mOnPageStartedHelper = new OnPageStartedHelper(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mOnPageFinishedHelper = new OnPageFinishedHelper(); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mOnReceivedErrorHelper = new OnReceivedErrorHelper(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mOnEvaluateJavaScriptResultHelper = new OnEvaluateJavaScriptResultHelper(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mAddMessageToConsoleHelper = new AddMessageToConsoleHelper(); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mOnScaleChangedHelper = new OnScaleChangedHelper(); 35a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch mPictureListenerHelper = new PictureListenerHelper(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public OnPageStartedHelper getOnPageStartedHelper() { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mOnPageStartedHelper; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public OnPageFinishedHelper getOnPageFinishedHelper() { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mOnPageFinishedHelper; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public OnReceivedErrorHelper getOnReceivedErrorHelper() { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mOnReceivedErrorHelper; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mOnEvaluateJavaScriptResultHelper; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public AddMessageToConsoleHelper getAddMessageToConsoleHelper() { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mAddMessageToConsoleHelper; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public static class OnScaleChangedHelper extends CallbackHelper { 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private float mPreviousScale; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private float mCurrentScale; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void notifyCalled(float oldScale, float newScale) { 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mPreviousScale = oldScale; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mCurrentScale = newScale; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) super.notifyCalled(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public float getLastScaleRatio() { 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) assert getCallCount() > 0; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mCurrentScale / mPreviousScale; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public OnScaleChangedHelper getOnScaleChangedHelper() { 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mOnScaleChangedHelper; 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 76a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch public PictureListenerHelper getPictureListenerHelper() { 77a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mPictureListenerHelper; 78a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 79a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public void onReceivedTitle(String title) { 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mUpdatedTitle = title; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public String getUpdatedTitle() { 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mUpdatedTitle; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onPageStarted(String url) { 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mOnPageStartedHelper.notifyCalled(url); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onPageFinished(String url) { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mOnPageFinishedHelper.notifyCalled(url); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public void onReceivedError(int errorCode, String description, String failingUrl) { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @Override 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public boolean onConsoleMessage(ConsoleMessage consoleMessage) { 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mAddMessageToConsoleHelper.notifyCalled(consoleMessage.messageLevel().ordinal(), 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) consoleMessage.message(), consoleMessage.lineNumber(), consoleMessage.sourceId()); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public static class AddMessageToConsoleHelper extends CallbackHelper { 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private int mLevel; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private String mMessage; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private int mLineNumber; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private String mSourceId; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public int getLevel() { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert getCallCount() > 0; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mLevel; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public String getMessage() { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert getCallCount() > 0; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mMessage; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public int getLineNumber() { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert getCallCount() > 0; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mLineNumber; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public String getSourceId() { 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert getCallCount() > 0; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mSourceId; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void notifyCalled(int level, String message, int lineNumer, String sourceId) { 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mLevel = level; 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mMessage = message; 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mLineNumber = lineNumer; 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mSourceId = sourceId; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) notifyCalled(); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void onScaleChangedScaled(float oldScale, float newScale) { 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mOnScaleChangedHelper.notifyCalled(oldScale, newScale); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 150a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 151a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch public static class PictureListenerHelper extends CallbackHelper { 152a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Generally null, depending on |invalidationOnly| in enableOnNewPicture() 153a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private Picture mPicture; 154a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 155a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch public Picture getPicture() { 156a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch assert getCallCount() > 0; 157a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch return mPicture; 158a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 159a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 160a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch void notifyCalled(Picture picture) { 161a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch mPicture = picture; 162a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch notifyCalled(); 163a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 164a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 165a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 166a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch @Override 167a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch public void onNewPicture(Picture picture) { 168a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch mPictureListenerHelper.notifyCalled(picture); 169a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 171