OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #include "chrome/browser/installable/installable_manager.h" | 5 #include "chrome/browser/installable/installable_manager.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "base/test/scoped_feature_list.h" | |
10 #include "base/threading/thread_task_runner_handle.h" | 11 #include "base/threading/thread_task_runner_handle.h" |
11 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" |
12 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 13 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
13 #include "chrome/common/chrome_switches.h" | 14 #include "chrome/common/chrome_features.h" |
14 #include "chrome/test/base/in_process_browser_test.h" | 15 #include "chrome/test/base/in_process_browser_test.h" |
15 #include "chrome/test/base/ui_test_utils.h" | 16 #include "chrome/test/base/ui_test_utils.h" |
16 #include "content/public/test/browser_test_utils.h" | 17 #include "content/public/test/browser_test_utils.h" |
17 #include "net/test/embedded_test_server/embedded_test_server.h" | 18 #include "net/test/embedded_test_server/embedded_test_server.h" |
18 | 19 |
19 using IconPurpose = content::Manifest::Icon::IconPurpose; | 20 using IconPurpose = content::Manifest::Icon::IconPurpose; |
20 | 21 |
21 namespace { | 22 namespace { |
22 | 23 |
23 const std::tuple<int, int, IconPurpose> kPrimaryIconParams{144, 144, | 24 const std::tuple<int, int, IconPurpose> kPrimaryIconParams{144, 144, |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
171 GURL primary_icon_url_; | 172 GURL primary_icon_url_; |
172 std::unique_ptr<SkBitmap> primary_icon_; | 173 std::unique_ptr<SkBitmap> primary_icon_; |
173 bool is_installable_; | 174 bool is_installable_; |
174 }; | 175 }; |
175 | 176 |
176 class InstallableManagerBrowserTest : public InProcessBrowserTest { | 177 class InstallableManagerBrowserTest : public InProcessBrowserTest { |
177 public: | 178 public: |
178 void SetUpOnMainThread() override { | 179 void SetUpOnMainThread() override { |
179 InProcessBrowserTest::SetUpOnMainThread(); | 180 InProcessBrowserTest::SetUpOnMainThread(); |
180 ASSERT_TRUE(embedded_test_server()->Start()); | 181 ASSERT_TRUE(embedded_test_server()->Start()); |
182 | |
183 // Make sure app banners are disabled in the browser so they do not | |
184 // interfere with the test. | |
185 feature_list_.InitAndDisableFeature(features::kAppBanners); | |
Ilya Sherman
2017/06/22 16:36:22
I'm not 100% sure, but I think this might be runni
benwells
2017/06/23 02:09:26
There is no problem with this, it does affect the
| |
181 } | 186 } |
182 | 187 |
183 // Returns a test server URL to a page controlled by a service worker with | 188 // Returns a test server URL to a page controlled by a service worker with |
184 // |manifest_url| injected as the manifest tag. | 189 // |manifest_url| injected as the manifest tag. |
185 std::string GetURLOfPageWithServiceWorkerAndManifest( | 190 std::string GetURLOfPageWithServiceWorkerAndManifest( |
186 const std::string& manifest_url) { | 191 const std::string& manifest_url) { |
187 return "/banners/manifest_test_page.html?manifest=" + | 192 return "/banners/manifest_test_page.html?manifest=" + |
188 embedded_test_server()->GetURL(manifest_url).spec(); | 193 embedded_test_server()->GetURL(manifest_url).spec(); |
189 } | 194 } |
190 | 195 |
191 void NavigateAndRunInstallableManager(CallbackTester* tester, | 196 void NavigateAndRunInstallableManager(CallbackTester* tester, |
192 const InstallableParams& params, | 197 const InstallableParams& params, |
193 const std::string& url) { | 198 const std::string& url) { |
194 GURL test_url = embedded_test_server()->GetURL(url); | 199 GURL test_url = embedded_test_server()->GetURL(url); |
195 ui_test_utils::NavigateToURL(browser(), test_url); | 200 ui_test_utils::NavigateToURL(browser(), test_url); |
196 RunInstallableManager(tester, params); | 201 RunInstallableManager(tester, params); |
197 } | 202 } |
198 | 203 |
199 void RunInstallableManager(CallbackTester* tester, | 204 void RunInstallableManager(CallbackTester* tester, |
200 const InstallableParams& params) { | 205 const InstallableParams& params) { |
201 InstallableManager* manager = GetManager(); | 206 InstallableManager* manager = GetManager(); |
202 manager->GetData(params, | 207 manager->GetData(params, |
203 base::Bind(&CallbackTester::OnDidFinishInstallableCheck, | 208 base::Bind(&CallbackTester::OnDidFinishInstallableCheck, |
204 base::Unretained(tester))); | 209 base::Unretained(tester))); |
205 } | 210 } |
206 | 211 |
207 void SetUpCommandLine(base::CommandLine* command_line) override { | |
208 // Make sure app banners are disabled in the browser so they do not | |
209 // interfere with the test. | |
210 command_line->AppendSwitch(switches::kDisableAddToShelf); | |
211 } | |
212 | |
213 InstallableManager* GetManager() { | 212 InstallableManager* GetManager() { |
214 content::WebContents* web_contents = | 213 content::WebContents* web_contents = |
215 browser()->tab_strip_model()->GetActiveWebContents(); | 214 browser()->tab_strip_model()->GetActiveWebContents(); |
216 InstallableManager::CreateForWebContents(web_contents); | 215 InstallableManager::CreateForWebContents(web_contents); |
217 InstallableManager* manager = | 216 InstallableManager* manager = |
218 InstallableManager::FromWebContents(web_contents); | 217 InstallableManager::FromWebContents(web_contents); |
219 CHECK(manager); | 218 CHECK(manager); |
220 | 219 |
221 return manager; | 220 return manager; |
222 } | 221 } |
223 | 222 |
224 InstallabilityCheckStatus GetStatus() { return GetManager()->page_status_; } | 223 InstallabilityCheckStatus GetStatus() { return GetManager()->page_status_; } |
224 | |
225 private: | |
226 base::test::ScopedFeatureList feature_list_; | |
225 }; | 227 }; |
226 | 228 |
227 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 229 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
228 ManagerBeginsInEmptyState) { | 230 ManagerBeginsInEmptyState) { |
229 // Ensure that the InstallableManager starts off with everything null. | 231 // Ensure that the InstallableManager starts off with everything null. |
230 InstallableManager* manager = GetManager(); | 232 InstallableManager* manager = GetManager(); |
231 | 233 |
232 EXPECT_TRUE(manager->manifest().IsEmpty()); | 234 EXPECT_TRUE(manager->manifest().IsEmpty()); |
233 EXPECT_TRUE(manager->manifest_url().is_empty()); | 235 EXPECT_TRUE(manager->manifest_url().is_empty()); |
234 EXPECT_TRUE(manager->icons_.empty()); | 236 EXPECT_TRUE(manager->icons_.empty()); |
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1037 CheckNestedCallsToGetData) { | 1039 CheckNestedCallsToGetData) { |
1038 // Verify that we can call GetData while in a callback from GetData. | 1040 // Verify that we can call GetData while in a callback from GetData. |
1039 base::RunLoop run_loop; | 1041 base::RunLoop run_loop; |
1040 InstallableParams params = GetWebAppParams(); | 1042 InstallableParams params = GetWebAppParams(); |
1041 std::unique_ptr<NestedCallbackTester> tester( | 1043 std::unique_ptr<NestedCallbackTester> tester( |
1042 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); | 1044 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); |
1043 | 1045 |
1044 tester->Run(); | 1046 tester->Run(); |
1045 run_loop.Run(); | 1047 run_loop.Run(); |
1046 } | 1048 } |
OLD | NEW |