TestAwContentsClient.java revision 5821806d5e7f356e8fa4b058a389a808ea183019
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)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import android.webkit.ConsoleMessage;
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.CallbackHelper;
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnEvaluateJavaScriptResultHelper;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestAwContentsClient extends NullContentsClient {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private OnPageStartedHelper mOnPageStartedHelper;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private OnPageFinishedHelper mOnPageFinishedHelper;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private OnReceivedErrorHelper mOnReceivedErrorHelper;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private OnEvaluateJavaScriptResultHelper mOnEvaluateJavaScriptResultHelper;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    private AddMessageToConsoleHelper mAddMessageToConsoleHelper;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public TestAwContentsClient() {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageStartedHelper = new OnPageStartedHelper();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageFinishedHelper = new OnPageFinishedHelper();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnReceivedErrorHelper = new OnReceivedErrorHelper();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnEvaluateJavaScriptResultHelper = new OnEvaluateJavaScriptResultHelper();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper = new AddMessageToConsoleHelper();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnPageStartedHelper getOnPageStartedHelper() {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnPageStartedHelper;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnPageFinishedHelper getOnPageFinishedHelper() {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnPageFinishedHelper;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnReceivedErrorHelper getOnReceivedErrorHelper() {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnReceivedErrorHelper;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public OnEvaluateJavaScriptResultHelper getOnEvaluateJavaScriptResultHelper() {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mOnEvaluateJavaScriptResultHelper;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public AddMessageToConsoleHelper getAddMessageToConsoleHelper() {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return mAddMessageToConsoleHelper;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onPageStarted(String url) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageStartedHelper.notifyCalled(url);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onPageFinished(String url) {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnPageFinishedHelper.notifyCalled(url);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onReceivedError(int errorCode, String description, String failingUrl) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnReceivedErrorHelper.notifyCalled(errorCode, description, failingUrl);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public void onEvaluateJavaScriptResult(int id, String jsonResult) {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        super.onEvaluateJavaScriptResult(id, jsonResult);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mOnEvaluateJavaScriptResultHelper.notifyCalled(id, jsonResult);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    @Override
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper.setLevel(consoleMessage.messageLevel().ordinal());
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper.setMessage(consoleMessage.message());
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper.setLineNumber(consoleMessage.lineNumber());
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper.setSourceId(consoleMessage.sourceId());
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        mAddMessageToConsoleHelper.notifyCalled();
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return false;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    public class AddMessageToConsoleHelper extends CallbackHelper {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private int mLevel;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private String mMessage;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private int mLineNumber;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        private String mSourceId;
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        void setLevel(int level) {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            mLevel = level;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        void setMessage(String message) {
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            mMessage = message;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        void setLineNumber(int lineNumber) {
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            mLineNumber = lineNumber;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        void setSourceId(String sourceId) {
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            mSourceId = sourceId;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public int getLevel() {
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mLevel;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public String getMessage() {
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mMessage;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public int getLineNumber() {
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mLineNumber;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        public String getSourceId() {
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            assert getCallCount() > 0;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            return mSourceId;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
124