| 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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 content::Manifest manifest_; | 171 content::Manifest manifest_; |
| 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 ASSERT_TRUE(embedded_test_server()->Start()); | 180 ASSERT_TRUE(embedded_test_server()->Start()); |
| 181 |
| 182 // Make sure app banners are disabled in the browser so they do not |
| 183 // interfere with the test. |
| 184 feature_list_.InitAndDisableFeature(features::kAppBanners); |
| 180 } | 185 } |
| 181 | 186 |
| 182 // Returns a test server URL to a page controlled by a service worker with | 187 // Returns a test server URL to a page controlled by a service worker with |
| 183 // |manifest_url| injected as the manifest tag. | 188 // |manifest_url| injected as the manifest tag. |
| 184 std::string GetURLOfPageWithServiceWorkerAndManifest( | 189 std::string GetURLOfPageWithServiceWorkerAndManifest( |
| 185 const std::string& manifest_url) { | 190 const std::string& manifest_url) { |
| 186 return "/banners/manifest_test_page.html?manifest=" + | 191 return "/banners/manifest_test_page.html?manifest=" + |
| 187 embedded_test_server()->GetURL(manifest_url).spec(); | 192 embedded_test_server()->GetURL(manifest_url).spec(); |
| 188 } | 193 } |
| 189 | 194 |
| 190 void NavigateAndRunInstallableManager(CallbackTester* tester, | 195 void NavigateAndRunInstallableManager(CallbackTester* tester, |
| 191 const InstallableParams& params, | 196 const InstallableParams& params, |
| 192 const std::string& url) { | 197 const std::string& url) { |
| 193 GURL test_url = embedded_test_server()->GetURL(url); | 198 GURL test_url = embedded_test_server()->GetURL(url); |
| 194 ui_test_utils::NavigateToURL(browser(), test_url); | 199 ui_test_utils::NavigateToURL(browser(), test_url); |
| 195 RunInstallableManager(tester, params); | 200 RunInstallableManager(tester, params); |
| 196 } | 201 } |
| 197 | 202 |
| 198 void RunInstallableManager(CallbackTester* tester, | 203 void RunInstallableManager(CallbackTester* tester, |
| 199 const InstallableParams& params) { | 204 const InstallableParams& params) { |
| 200 InstallableManager* manager = GetManager(); | 205 InstallableManager* manager = GetManager(); |
| 201 manager->GetData(params, | 206 manager->GetData(params, |
| 202 base::Bind(&CallbackTester::OnDidFinishInstallableCheck, | 207 base::Bind(&CallbackTester::OnDidFinishInstallableCheck, |
| 203 base::Unretained(tester))); | 208 base::Unretained(tester))); |
| 204 } | 209 } |
| 205 | 210 |
| 206 void SetUpCommandLine(base::CommandLine* command_line) override { | |
| 207 // Make sure app banners are disabled in the browser so they do not | |
| 208 // interfere with the test. | |
| 209 command_line->AppendSwitch(switches::kDisableAddToShelf); | |
| 210 } | |
| 211 | |
| 212 InstallableManager* GetManager() { | 211 InstallableManager* GetManager() { |
| 213 content::WebContents* web_contents = | 212 content::WebContents* web_contents = |
| 214 browser()->tab_strip_model()->GetActiveWebContents(); | 213 browser()->tab_strip_model()->GetActiveWebContents(); |
| 215 InstallableManager::CreateForWebContents(web_contents); | 214 InstallableManager::CreateForWebContents(web_contents); |
| 216 InstallableManager* manager = | 215 InstallableManager* manager = |
| 217 InstallableManager::FromWebContents(web_contents); | 216 InstallableManager::FromWebContents(web_contents); |
| 218 CHECK(manager); | 217 CHECK(manager); |
| 219 | 218 |
| 220 return manager; | 219 return manager; |
| 221 } | 220 } |
| 222 | 221 |
| 223 InstallabilityCheckStatus GetStatus() { return GetManager()->page_status_; } | 222 InstallabilityCheckStatus GetStatus() { return GetManager()->page_status_; } |
| 223 |
| 224 private: |
| 225 base::test::ScopedFeatureList feature_list_; |
| 224 }; | 226 }; |
| 225 | 227 |
| 226 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 228 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 227 ManagerBeginsInEmptyState) { | 229 ManagerBeginsInEmptyState) { |
| 228 // Ensure that the InstallableManager starts off with everything null. | 230 // Ensure that the InstallableManager starts off with everything null. |
| 229 InstallableManager* manager = GetManager(); | 231 InstallableManager* manager = GetManager(); |
| 230 | 232 |
| 231 EXPECT_TRUE(manager->manifest().IsEmpty()); | 233 EXPECT_TRUE(manager->manifest().IsEmpty()); |
| 232 EXPECT_TRUE(manager->manifest_url().is_empty()); | 234 EXPECT_TRUE(manager->manifest_url().is_empty()); |
| 233 EXPECT_TRUE(manager->icons_.empty()); | 235 EXPECT_TRUE(manager->icons_.empty()); |
| (...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1059 CheckNestedCallsToGetData) { | 1061 CheckNestedCallsToGetData) { |
| 1060 // Verify that we can call GetData while in a callback from GetData. | 1062 // Verify that we can call GetData while in a callback from GetData. |
| 1061 base::RunLoop run_loop; | 1063 base::RunLoop run_loop; |
| 1062 InstallableParams params = GetWebAppParams(); | 1064 InstallableParams params = GetWebAppParams(); |
| 1063 std::unique_ptr<NestedCallbackTester> tester( | 1065 std::unique_ptr<NestedCallbackTester> tester( |
| 1064 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); | 1066 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); |
| 1065 | 1067 |
| 1066 tester->Run(); | 1068 tester->Run(); |
| 1067 run_loop.Run(); | 1069 run_loop.Run(); |
| 1068 } | 1070 } |
| OLD | NEW |