1 | // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. |
4 | |
5 | package org.chromium.chrome.testshell; |
6 | |
7 | import org.chromium.content.browser.ContentViewClient; |
8 | import org.chromium.content.browser.test.util.CallbackHelper; |
9 | import org.chromium.content.browser.test.util.TestCallbackHelperContainer; |
10 | import org.chromium.content.browser.test.util.TestContentViewClient; |
11 | import org.chromium.content.browser.test.util.TestContentViewClientWrapper; |
12 | import org.chromium.content.browser.test.util.TestWebContentsObserver; |
13 | |
14 | /** |
15 | * A utility class that contains methods generic to all Tabs tests. |
16 | */ |
17 | public class TabShellTabUtils { |
18 | private static TestContentViewClient createTestContentViewClientForTab(TestShellTab tab) { |
19 | ContentViewClient client = tab.getContentView().getContentViewClient(); |
20 | if (client instanceof TestContentViewClient) return (TestContentViewClient) client; |
21 | |
22 | TestContentViewClient testClient = new TestContentViewClientWrapper(client); |
23 | tab.getContentView().setContentViewClient(testClient); |
24 | return testClient; |
25 | } |
26 | |
27 | public static class TestCallbackHelperContainerForTab |
28 | extends TestCallbackHelperContainer implements TestShellTabObserver { |
29 | private final OnCloseTabHelper mOnCloseTabHelper; |
30 | public TestCallbackHelperContainerForTab(TestShellTab tab) { |
31 | super(createTestContentViewClientForTab(tab), |
32 | new TestWebContentsObserver(tab.getContentView().getContentViewCore())); |
33 | mOnCloseTabHelper = new OnCloseTabHelper(); |
34 | tab.addObserver(this); |
35 | } |
36 | |
37 | public static class OnCloseTabHelper extends CallbackHelper { |
38 | } |
39 | |
40 | public OnCloseTabHelper getOnCloseTabHelper() { |
41 | return mOnCloseTabHelper; |
42 | } |
43 | |
44 | @Override |
45 | public void onLoadProgressChanged(TestShellTab tab, int progress) { |
46 | } |
47 | |
48 | @Override |
49 | public void onUpdateUrl(TestShellTab tab, String url) { |
50 | } |
51 | |
52 | @Override |
53 | public void onCloseTab(TestShellTab tab) { |
54 | mOnCloseTabHelper.notifyCalled(); |
55 | } |
56 | } |
57 | |
58 | /** |
59 | * Creates, binds and returns a TestCallbackHelperContainer for a given Tab. |
60 | */ |
61 | public static TestCallbackHelperContainerForTab getTestCallbackHelperContainer( |
62 | final TestShellTab tab) { |
63 | return tab == null ? null : new TestCallbackHelperContainerForTab(tab); |
64 | } |
65 | } |