OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.appmenu; | 5 package org.chromium.chrome.browser.appmenu; |
6 | 6 |
7 import android.app.Activity; | 7 import android.app.Activity; |
8 import android.support.test.filters.SmallTest; | 8 import android.support.test.filters.SmallTest; |
9 | 9 import android.test.UiThreadTest; |
10 import org.junit.Assert; | |
11 import org.junit.Before; | |
12 import org.junit.Rule; | |
13 import org.junit.Test; | |
14 import org.junit.runner.RunWith; | |
15 | 10 |
16 import org.chromium.base.ContextUtils; | 11 import org.chromium.base.ContextUtils; |
17 import org.chromium.base.test.util.CommandLineFlags; | 12 import org.chromium.base.test.util.CommandLineFlags; |
18 import org.chromium.base.test.util.Feature; | 13 import org.chromium.base.test.util.Feature; |
19 import org.chromium.base.test.util.RetryOnFailure; | 14 import org.chromium.base.test.util.RetryOnFailure; |
20 import org.chromium.chrome.R; | 15 import org.chromium.chrome.R; |
21 import org.chromium.chrome.browser.ChromeActivity; | |
22 import org.chromium.chrome.browser.ChromeSwitches; | |
23 import org.chromium.chrome.browser.ChromeTabbedActivity; | 16 import org.chromium.chrome.browser.ChromeTabbedActivity; |
24 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; | 17 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; |
25 import org.chromium.chrome.test.ChromeActivityTestRule; | 18 import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
26 import org.chromium.chrome.test.ChromeJUnit4ClassRunner; | |
27 | 19 |
28 /** | 20 /** |
29 * Tests the Data Saver AppMenu footer | 21 * Tests the Data Saver AppMenu footer |
30 */ | 22 */ |
31 @RunWith(ChromeJUnit4ClassRunner.class) | |
32 @RetryOnFailure | 23 @RetryOnFailure |
33 @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, | 24 public class DataSaverAppMenuTest extends ChromeActivityTestCaseBase<ChromeTabbe
dActivity> { |
34 ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG}) | |
35 public class DataSaverAppMenuTest { | |
36 @Rule | |
37 public ChromeActivityTestRule<ChromeActivity> mActivityTestRule = | |
38 new ChromeActivityTestRule<>(ChromeActivity.class); | |
39 | |
40 private AppMenuHandlerForTest mAppMenuHandler; | 25 private AppMenuHandlerForTest mAppMenuHandler; |
41 | 26 |
42 /** | 27 /** |
43 * AppMenuHandler that will be used to intercept the delegate for testing. | 28 * AppMenuHandler that will be used to intercept the delegate for testing. |
44 */ | 29 */ |
45 public static class AppMenuHandlerForTest extends AppMenuHandler { | 30 public static class AppMenuHandlerForTest extends AppMenuHandler { |
46 AppMenuPropertiesDelegate mDelegate; | 31 AppMenuPropertiesDelegate mDelegate; |
47 | 32 |
48 /** | 33 /** |
49 * AppMenuHandler for intercepting options item selections. | 34 * AppMenuHandler for intercepting options item selections. |
50 */ | 35 */ |
51 public AppMenuHandlerForTest( | 36 public AppMenuHandlerForTest( |
52 Activity activity, AppMenuPropertiesDelegate delegate, int menuR
esourceId) { | 37 Activity activity, AppMenuPropertiesDelegate delegate, int menuR
esourceId) { |
53 super(activity, delegate, menuResourceId); | 38 super(activity, delegate, menuResourceId); |
54 mDelegate = delegate; | 39 mDelegate = delegate; |
55 } | 40 } |
56 | 41 |
57 public AppMenuPropertiesDelegate getDelegate() { | 42 public AppMenuPropertiesDelegate getDelegate() { |
58 return mDelegate; | 43 return mDelegate; |
59 } | 44 } |
60 } | 45 } |
61 | 46 |
62 @Before | 47 public DataSaverAppMenuTest() { |
63 public void setUp() throws Exception { | 48 super(ChromeTabbedActivity.class); |
| 49 } |
| 50 |
| 51 @Override |
| 52 public void startMainActivity() throws InterruptedException { |
| 53 startMainActivityOnBlankPage(); |
| 54 } |
| 55 |
| 56 @Override |
| 57 protected void setUp() throws Exception { |
64 ChromeTabbedActivity.setAppMenuHandlerFactoryForTesting( | 58 ChromeTabbedActivity.setAppMenuHandlerFactoryForTesting( |
65 new ChromeTabbedActivity.AppMenuHandlerFactory() { | 59 new ChromeTabbedActivity.AppMenuHandlerFactory() { |
66 @Override | 60 @Override |
67 public AppMenuHandler get(Activity activity, AppMenuProperti
esDelegate delegate, | 61 public AppMenuHandler get(Activity activity, AppMenuProperti
esDelegate delegate, |
68 int menuResourceId) { | 62 int menuResourceId) { |
69 mAppMenuHandler = | 63 mAppMenuHandler = |
70 new AppMenuHandlerForTest(activity, delegate, me
nuResourceId); | 64 new AppMenuHandlerForTest(activity, delegate, me
nuResourceId); |
71 return mAppMenuHandler; | 65 return mAppMenuHandler; |
72 } | 66 } |
73 }); | 67 }); |
74 | 68 |
75 mActivityTestRule.startMainActivityOnBlankPage(); | 69 super.setUp(); |
76 } | 70 } |
77 | 71 |
78 /** | 72 /** |
79 * Verify the Data Saver item does not show when the feature isn't on, and t
he proxy is enabled. | 73 * Verify the Data Saver item does not show when the feature isn't on, and t
he proxy is enabled. |
80 */ | 74 */ |
81 @Test | |
82 @SmallTest | 75 @SmallTest |
| 76 @UiThreadTest |
83 @CommandLineFlags.Add("disable-field-trial-config") | 77 @CommandLineFlags.Add("disable-field-trial-config") |
84 @Feature({"Browser", "Main"}) | 78 @Feature({"Browser", "Main"}) |
85 public void testMenuDataSaverNoFeature() throws Throwable { | 79 public void testMenuDataSaverNoFeature() { |
86 mActivityTestRule.runOnUiThread(new Runnable() { | 80 ContextUtils.getAppSharedPreferences().edit().clear().apply(); |
87 @Override | 81 assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId()); |
88 public void run() { | 82 DataReductionProxySettings.getInstance().setDataReductionProxyEnabled( |
89 ContextUtils.getAppSharedPreferences().edit().clear().apply(); | 83 getActivity().getApplicationContext(), true); |
90 Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterRe
sourceId()); | 84 assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId()); |
91 DataReductionProxySettings.getInstance().setDataReductionProxyEn
abled( | |
92 mActivityTestRule.getActivity().getApplicationContext(),
true); | |
93 Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterRe
sourceId()); | |
94 } | |
95 }); | |
96 } | 85 } |
97 | 86 |
98 /** | 87 /** |
99 * Verify the Data Saver footer shows with the flag when the proxy is on. | 88 * Verify the Data Saver footer shows with the flag when the proxy is on. |
100 */ | 89 */ |
101 @Test | |
102 @SmallTest | 90 @SmallTest |
| 91 @UiThreadTest |
103 @CommandLineFlags.Add({"enable-features=DataReductionProxyMainMenu", | 92 @CommandLineFlags.Add({"enable-features=DataReductionProxyMainMenu", |
104 "disable-field-trial-config"}) | 93 "disable-field-trial-config"}) |
105 @Feature({"Browser", "Main"}) | 94 @Feature({"Browser", "Main"}) |
106 public void testMenuDataSaver() throws Throwable { | 95 public void testMenuDataSaver() { |
107 mActivityTestRule.runOnUiThread(new Runnable() { | 96 ContextUtils.getAppSharedPreferences().edit().clear().apply(); |
108 @Override | 97 // Data Saver hasn't been turned on, the footer shouldn't show. |
109 public void run() { | 98 assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId()); |
110 ContextUtils.getAppSharedPreferences().edit().clear().apply(); | |
111 // Data Saver hasn't been turned on, the footer shouldn't show. | |
112 Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterRe
sourceId()); | |
113 | 99 |
114 // Turn Data Saver on, the footer should show. | 100 // Turn Data Saver on, the footer should show. |
115 DataReductionProxySettings.getInstance().setDataReductionProxyEn
abled( | 101 DataReductionProxySettings.getInstance().setDataReductionProxyEnabled( |
116 mActivityTestRule.getActivity().getApplicationContext(),
true); | 102 getActivity().getApplicationContext(), true); |
117 Assert.assertEquals(R.layout.data_reduction_main_menu_footer, | 103 assertEquals(R.layout.data_reduction_main_menu_footer, |
118 mAppMenuHandler.getDelegate().getFooterResourceId()); | 104 mAppMenuHandler.getDelegate().getFooterResourceId()); |
119 | 105 |
120 // Ensure the footer is removed if the proxy is turned off. | 106 // Ensure the footer is removed if the proxy is turned off. |
121 DataReductionProxySettings.getInstance().setDataReductionProxyEn
abled( | 107 DataReductionProxySettings.getInstance().setDataReductionProxyEnabled( |
122 mActivityTestRule.getActivity().getApplicationContext(),
false); | 108 getActivity().getApplicationContext(), false); |
123 Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterRe
sourceId()); | 109 assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId()); |
124 } | |
125 }); | |
126 } | 110 } |
127 | 111 |
128 /** | 112 /** |
129 * Verify the Data Saver footer shows with the flag when the proxy turns on
and remains in the | 113 * Verify the Data Saver footer shows with the flag when the proxy turns on
and remains in the |
130 * main menu. | 114 * main menu. |
131 */ | 115 */ |
132 @Test | |
133 @SmallTest | 116 @SmallTest |
| 117 @UiThreadTest |
134 @CommandLineFlags.Add({"enable-features=DataReductionProxyMainMenu<DataReduc
tionProxyMainMenu", | 118 @CommandLineFlags.Add({"enable-features=DataReductionProxyMainMenu<DataReduc
tionProxyMainMenu", |
135 "force-fieldtrials=DataReductionProxyMainMenu/Enabled", | 119 "force-fieldtrials=DataReductionProxyMainMenu/Enabled", |
136 "force-fieldtrial-params=DataReductionProxyMainMenu.Enabled:" | 120 "force-fieldtrial-params=DataReductionProxyMainMenu.Enabled:" |
137 + "persistent_menu_item_enabled/true", | 121 + "persistent_menu_item_enabled/true", |
138 "disable-field-trial-config"}) | 122 "disable-field-trial-config"}) |
139 @Feature({"Browser", "Main"}) | 123 @Feature({"Browser", "Main"}) |
140 public void testMenuDataSaverPersistent() throws Throwable { | 124 public void testMenuDataSaverPersistent() { |
141 mActivityTestRule.runOnUiThread(new Runnable() { | 125 ContextUtils.getAppSharedPreferences().edit().clear().apply(); |
142 @Override | 126 // Data Saver hasn't been turned on, the footer shouldn't show. |
143 public void run() { | 127 assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId()); |
144 ContextUtils.getAppSharedPreferences().edit().clear().apply(); | |
145 // Data Saver hasn't been turned on, the footer shouldn't show. | |
146 Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterRe
sourceId()); | |
147 | 128 |
148 // Turn Data Saver on, the footer should show. | 129 // Turn Data Saver on, the footer should show. |
149 DataReductionProxySettings.getInstance().setDataReductionProxyEn
abled( | 130 DataReductionProxySettings.getInstance().setDataReductionProxyEnabled( |
150 mActivityTestRule.getActivity().getApplicationContext(),
true); | 131 getActivity().getApplicationContext(), true); |
151 Assert.assertEquals(R.layout.data_reduction_main_menu_footer, | 132 assertEquals(R.layout.data_reduction_main_menu_footer, |
152 mAppMenuHandler.getDelegate().getFooterResourceId()); | 133 mAppMenuHandler.getDelegate().getFooterResourceId()); |
153 | 134 |
154 // Ensure the footer remains if the proxy is turned off. | 135 // Ensure the footer remains if the proxy is turned off. |
155 DataReductionProxySettings.getInstance().setDataReductionProxyEn
abled( | 136 DataReductionProxySettings.getInstance().setDataReductionProxyEnabled( |
156 mActivityTestRule.getActivity().getApplicationContext(),
false); | 137 getActivity().getApplicationContext(), false); |
157 Assert.assertEquals(R.layout.data_reduction_main_menu_footer, | 138 assertEquals(R.layout.data_reduction_main_menu_footer, |
158 mAppMenuHandler.getDelegate().getFooterResourceId()); | 139 mAppMenuHandler.getDelegate().getFooterResourceId()); |
159 } | |
160 }); | |
161 } | 140 } |
162 } | 141 } |
OLD | NEW |