| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "chrome/browser/bookmarks/bookmark_model.h" | 8 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 9 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 9 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| 10 #include "chrome/browser/bookmarks/bookmark_test_helpers.h" | 10 #include "chrome/browser/bookmarks/bookmark_test_helpers.h" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 if (extension) | 97 if (extension) |
| 98 page_complete.Wait(); | 98 page_complete.Wait(); |
| 99 return extension; | 99 return extension; |
| 100 } | 100 } |
| 101 }; | 101 }; |
| 102 | 102 |
| 103 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, BrowserActionCreateTab) { | 103 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, BrowserActionCreateTab) { |
| 104 ASSERT_TRUE(LoadExtensionAndWait("browser_action_create_tab")); | 104 ASSERT_TRUE(LoadExtensionAndWait("browser_action_create_tab")); |
| 105 | 105 |
| 106 // Lazy Background Page doesn't exist yet. | 106 // Lazy Background Page doesn't exist yet. |
| 107 ExtensionProcessManager* pm = | 107 extensions::ProcessManager* pm = |
| 108 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 108 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 109 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 109 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 110 int num_tabs_before = browser()->tab_strip_model()->count(); | 110 int num_tabs_before = browser()->tab_strip_model()->count(); |
| 111 | 111 |
| 112 // Observe background page being created and closed after | 112 // Observe background page being created and closed after |
| 113 // the browser action is clicked. | 113 // the browser action is clicked. |
| 114 LazyBackgroundObserver page_complete; | 114 LazyBackgroundObserver page_complete; |
| 115 BrowserActionTestUtil(browser()).Press(0); | 115 BrowserActionTestUtil(browser()).Press(0); |
| 116 page_complete.Wait(); | 116 page_complete.Wait(); |
| 117 | 117 |
| 118 // Background page created a new tab before it closed. | 118 // Background page created a new tab before it closed. |
| 119 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 119 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 120 EXPECT_EQ(num_tabs_before + 1, browser()->tab_strip_model()->count()); | 120 EXPECT_EQ(num_tabs_before + 1, browser()->tab_strip_model()->count()); |
| 121 EXPECT_EQ(std::string(chrome::kChromeUIExtensionsURL), | 121 EXPECT_EQ(std::string(chrome::kChromeUIExtensionsURL), |
| 122 browser()->tab_strip_model()->GetActiveWebContents()-> | 122 browser()->tab_strip_model()->GetActiveWebContents()-> |
| 123 GetURL().spec()); | 123 GetURL().spec()); |
| 124 } | 124 } |
| 125 | 125 |
| 126 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, | 126 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, |
| 127 BrowserActionCreateTabAfterCallback) { | 127 BrowserActionCreateTabAfterCallback) { |
| 128 ASSERT_TRUE(LoadExtensionAndWait("browser_action_with_callback")); | 128 ASSERT_TRUE(LoadExtensionAndWait("browser_action_with_callback")); |
| 129 | 129 |
| 130 // Lazy Background Page doesn't exist yet. | 130 // Lazy Background Page doesn't exist yet. |
| 131 ExtensionProcessManager* pm = | 131 extensions::ProcessManager* pm = |
| 132 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 132 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 133 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 133 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 134 int num_tabs_before = browser()->tab_strip_model()->count(); | 134 int num_tabs_before = browser()->tab_strip_model()->count(); |
| 135 | 135 |
| 136 // Observe background page being created and closed after | 136 // Observe background page being created and closed after |
| 137 // the browser action is clicked. | 137 // the browser action is clicked. |
| 138 LazyBackgroundObserver page_complete; | 138 LazyBackgroundObserver page_complete; |
| 139 BrowserActionTestUtil(browser()).Press(0); | 139 BrowserActionTestUtil(browser()).Press(0); |
| 140 page_complete.Wait(); | 140 page_complete.Wait(); |
| 141 | 141 |
| 142 // Background page is closed after creating a new tab. | 142 // Background page is closed after creating a new tab. |
| 143 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 143 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 144 EXPECT_EQ(num_tabs_before + 1, browser()->tab_strip_model()->count()); | 144 EXPECT_EQ(num_tabs_before + 1, browser()->tab_strip_model()->count()); |
| 145 } | 145 } |
| 146 | 146 |
| 147 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, BroadcastEvent) { | 147 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, BroadcastEvent) { |
| 148 ASSERT_TRUE(StartEmbeddedTestServer()); | 148 ASSERT_TRUE(StartEmbeddedTestServer()); |
| 149 | 149 |
| 150 const Extension* extension = LoadExtensionAndWait("broadcast_event"); | 150 const Extension* extension = LoadExtensionAndWait("broadcast_event"); |
| 151 ASSERT_TRUE(extension); | 151 ASSERT_TRUE(extension); |
| 152 | 152 |
| 153 // Lazy Background Page doesn't exist yet. | 153 // Lazy Background Page doesn't exist yet. |
| 154 ExtensionProcessManager* pm = | 154 extensions::ProcessManager* pm = |
| 155 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 155 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 156 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 156 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 157 int num_page_actions = browser()->window()->GetLocationBar()-> | 157 int num_page_actions = browser()->window()->GetLocationBar()-> |
| 158 GetLocationBarForTesting()->PageActionVisibleCount(); | 158 GetLocationBarForTesting()->PageActionVisibleCount(); |
| 159 | 159 |
| 160 // Open a tab to a URL that will trigger the page action to show. | 160 // Open a tab to a URL that will trigger the page action to show. |
| 161 LazyBackgroundObserver page_complete; | 161 LazyBackgroundObserver page_complete; |
| 162 content::WindowedNotificationObserver page_action_changed( | 162 content::WindowedNotificationObserver page_action_changed( |
| 163 chrome::NOTIFICATION_EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, | 163 chrome::NOTIFICATION_EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, |
| 164 content::NotificationService::AllSources()); | 164 content::NotificationService::AllSources()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 175 GetLocationBarForTesting()->PageActionVisibleCount()); | 175 GetLocationBarForTesting()->PageActionVisibleCount()); |
| 176 } | 176 } |
| 177 | 177 |
| 178 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Filters) { | 178 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Filters) { |
| 179 ASSERT_TRUE(StartEmbeddedTestServer()); | 179 ASSERT_TRUE(StartEmbeddedTestServer()); |
| 180 | 180 |
| 181 const Extension* extension = LoadExtensionAndWait("filters"); | 181 const Extension* extension = LoadExtensionAndWait("filters"); |
| 182 ASSERT_TRUE(extension); | 182 ASSERT_TRUE(extension); |
| 183 | 183 |
| 184 // Lazy Background Page doesn't exist yet. | 184 // Lazy Background Page doesn't exist yet. |
| 185 ExtensionProcessManager* pm = | 185 extensions::ProcessManager* pm = |
| 186 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 186 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 187 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 187 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 188 | 188 |
| 189 // Open a tab to a URL that will fire a webNavigation event. | 189 // Open a tab to a URL that will fire a webNavigation event. |
| 190 LazyBackgroundObserver page_complete; | 190 LazyBackgroundObserver page_complete; |
| 191 ui_test_utils::NavigateToURL( | 191 ui_test_utils::NavigateToURL( |
| 192 browser(), embedded_test_server()->GetURL("/extensions/test_file.html")); | 192 browser(), embedded_test_server()->GetURL("/extensions/test_file.html")); |
| 193 page_complete.Wait(); | 193 page_complete.Wait(); |
| 194 } | 194 } |
| 195 | 195 |
| 196 // Tests that the lazy background page receives the onInstalled event and shuts | 196 // Tests that the lazy background page receives the onInstalled event and shuts |
| 197 // down. | 197 // down. |
| 198 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnInstalled) { | 198 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnInstalled) { |
| 199 ResultCatcher catcher; | 199 ResultCatcher catcher; |
| 200 ASSERT_TRUE(LoadExtensionAndWait("on_installed")); | 200 ASSERT_TRUE(LoadExtensionAndWait("on_installed")); |
| 201 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 201 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 202 | 202 |
| 203 // Lazy Background Page has been shut down. | 203 // Lazy Background Page has been shut down. |
| 204 ExtensionProcessManager* pm = | 204 extensions::ProcessManager* pm = |
| 205 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 205 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 206 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 206 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 207 } | 207 } |
| 208 | 208 |
| 209 // Tests that the lazy background page stays alive until all visible views are | 209 // Tests that the lazy background page stays alive until all visible views are |
| 210 // closed. | 210 // closed. |
| 211 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForView) { | 211 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForView) { |
| 212 LazyBackgroundObserver page_complete; | 212 LazyBackgroundObserver page_complete; |
| 213 ResultCatcher catcher; | 213 ResultCatcher catcher; |
| 214 base::FilePath extdir = test_data_dir_.AppendASCII("lazy_background_page"). | 214 base::FilePath extdir = test_data_dir_.AppendASCII("lazy_background_page"). |
| 215 AppendASCII("wait_for_view"); | 215 AppendASCII("wait_for_view"); |
| 216 const Extension* extension = LoadExtension(extdir); | 216 const Extension* extension = LoadExtension(extdir); |
| 217 ASSERT_TRUE(extension); | 217 ASSERT_TRUE(extension); |
| 218 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 218 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 219 | 219 |
| 220 // The extension should've opened a new tab to an extension page. | 220 // The extension should've opened a new tab to an extension page. |
| 221 EXPECT_EQ(extension->GetResourceURL("extension_page.html").spec(), | 221 EXPECT_EQ(extension->GetResourceURL("extension_page.html").spec(), |
| 222 browser()->tab_strip_model()->GetActiveWebContents()-> | 222 browser()->tab_strip_model()->GetActiveWebContents()-> |
| 223 GetURL().spec()); | 223 GetURL().spec()); |
| 224 | 224 |
| 225 // Lazy Background Page still exists, because the extension created a new tab | 225 // Lazy Background Page still exists, because the extension created a new tab |
| 226 // to an extension page. | 226 // to an extension page. |
| 227 ExtensionProcessManager* pm = | 227 extensions::ProcessManager* pm = |
| 228 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 228 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 229 EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 229 EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 230 | 230 |
| 231 // Close the new tab. | 231 // Close the new tab. |
| 232 browser()->tab_strip_model()->CloseWebContentsAt( | 232 browser()->tab_strip_model()->CloseWebContentsAt( |
| 233 browser()->tab_strip_model()->active_index(), TabStripModel::CLOSE_NONE); | 233 browser()->tab_strip_model()->active_index(), TabStripModel::CLOSE_NONE); |
| 234 page_complete.Wait(); | 234 page_complete.Wait(); |
| 235 | 235 |
| 236 // Lazy Background Page has been shut down. | 236 // Lazy Background Page has been shut down. |
| 237 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 237 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 238 } | 238 } |
| 239 | 239 |
| 240 // Tests that the lazy background page stays alive until all network requests | 240 // Tests that the lazy background page stays alive until all network requests |
| 241 // are complete. | 241 // are complete. |
| 242 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForRequest) { | 242 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForRequest) { |
| 243 host_resolver()->AddRule("*", "127.0.0.1"); | 243 host_resolver()->AddRule("*", "127.0.0.1"); |
| 244 ASSERT_TRUE(StartEmbeddedTestServer()); | 244 ASSERT_TRUE(StartEmbeddedTestServer()); |
| 245 | 245 |
| 246 LazyBackgroundObserver page_complete; | 246 LazyBackgroundObserver page_complete; |
| 247 ResultCatcher catcher; | 247 ResultCatcher catcher; |
| 248 base::FilePath extdir = test_data_dir_.AppendASCII("lazy_background_page"). | 248 base::FilePath extdir = test_data_dir_.AppendASCII("lazy_background_page"). |
| 249 AppendASCII("wait_for_request"); | 249 AppendASCII("wait_for_request"); |
| 250 const Extension* extension = LoadExtension(extdir); | 250 const Extension* extension = LoadExtension(extdir); |
| 251 ASSERT_TRUE(extension); | 251 ASSERT_TRUE(extension); |
| 252 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 252 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 253 | 253 |
| 254 // Lazy Background Page still exists, because the extension started a request. | 254 // Lazy Background Page still exists, because the extension started a request. |
| 255 ExtensionProcessManager* pm = | 255 extensions::ProcessManager* pm = |
| 256 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 256 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 257 extensions::ExtensionHost* host = | 257 extensions::ExtensionHost* host = |
| 258 pm->GetBackgroundHostForExtension(last_loaded_extension_id()); | 258 pm->GetBackgroundHostForExtension(last_loaded_extension_id()); |
| 259 ASSERT_TRUE(host); | 259 ASSERT_TRUE(host); |
| 260 | 260 |
| 261 // Abort the request. | 261 // Abort the request. |
| 262 bool result = false; | 262 bool result = false; |
| 263 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 263 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 264 host->render_view_host(), "abortRequest()", &result)); | 264 host->render_view_host(), "abortRequest()", &result)); |
| 265 EXPECT_TRUE(result); | 265 EXPECT_TRUE(result); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 286 ASSERT_TRUE(extension); | 286 ASSERT_TRUE(extension); |
| 287 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 287 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 288 | 288 |
| 289 // The extension should've opened a new tab to an extension page. | 289 // The extension should've opened a new tab to an extension page. |
| 290 EXPECT_TRUE(chrome::IsNTPURL( | 290 EXPECT_TRUE(chrome::IsNTPURL( |
| 291 browser()->tab_strip_model()->GetActiveWebContents()->GetURL(), | 291 browser()->tab_strip_model()->GetActiveWebContents()->GetURL(), |
| 292 browser()->profile())); | 292 browser()->profile())); |
| 293 | 293 |
| 294 // Lazy Background Page still exists, because the extension created a new tab | 294 // Lazy Background Page still exists, because the extension created a new tab |
| 295 // to an extension page. | 295 // to an extension page. |
| 296 ExtensionProcessManager* pm = | 296 extensions::ProcessManager* pm = |
| 297 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 297 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 298 EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 298 EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 299 | 299 |
| 300 // Navigate away from the NTP, which should close the event page. | 300 // Navigate away from the NTP, which should close the event page. |
| 301 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); | 301 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); |
| 302 lazybg.Wait(); | 302 lazybg.Wait(); |
| 303 | 303 |
| 304 // Lazy Background Page has been shut down. | 304 // Lazy Background Page has been shut down. |
| 305 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 305 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 306 } | 306 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 322 // Load the extension with incognito enabled. | 322 // Load the extension with incognito enabled. |
| 323 { | 323 { |
| 324 LoadedIncognitoObserver loaded(browser()->profile()); | 324 LoadedIncognitoObserver loaded(browser()->profile()); |
| 325 base::FilePath extdir = test_data_dir_.AppendASCII("lazy_background_page"). | 325 base::FilePath extdir = test_data_dir_.AppendASCII("lazy_background_page"). |
| 326 AppendASCII("incognito_split"); | 326 AppendASCII("incognito_split"); |
| 327 ASSERT_TRUE(LoadExtensionIncognito(extdir)); | 327 ASSERT_TRUE(LoadExtensionIncognito(extdir)); |
| 328 loaded.Wait(); | 328 loaded.Wait(); |
| 329 } | 329 } |
| 330 | 330 |
| 331 // Lazy Background Page doesn't exist yet. | 331 // Lazy Background Page doesn't exist yet. |
| 332 ExtensionProcessManager* pm = | 332 extensions::ProcessManager* pm = |
| 333 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 333 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 334 ExtensionProcessManager* pmi = | 334 extensions::ProcessManager* pmi = |
| 335 extensions::ExtensionSystem::Get(incognito_browser->profile())-> | 335 extensions::ExtensionSystem::Get(incognito_browser->profile())-> |
| 336 process_manager(); | 336 process_manager(); |
| 337 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 337 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 338 EXPECT_FALSE(pmi->GetBackgroundHostForExtension(last_loaded_extension_id())); | 338 EXPECT_FALSE(pmi->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 339 | 339 |
| 340 // Trigger a browserAction event in the original profile and ensure only | 340 // Trigger a browserAction event in the original profile and ensure only |
| 341 // the original event page received it (since the event is scoped to the | 341 // the original event page received it (since the event is scoped to the |
| 342 // profile). | 342 // profile). |
| 343 { | 343 { |
| 344 ExtensionTestMessageListener listener("waiting", false); | 344 ExtensionTestMessageListener listener("waiting", false); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 } | 381 } |
| 382 } | 382 } |
| 383 | 383 |
| 384 // Tests that messages from the content script activate the lazy background | 384 // Tests that messages from the content script activate the lazy background |
| 385 // page, and keep it alive until all channels are closed. | 385 // page, and keep it alive until all channels are closed. |
| 386 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Messaging) { | 386 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Messaging) { |
| 387 ASSERT_TRUE(StartEmbeddedTestServer()); | 387 ASSERT_TRUE(StartEmbeddedTestServer()); |
| 388 ASSERT_TRUE(LoadExtensionAndWait("messaging")); | 388 ASSERT_TRUE(LoadExtensionAndWait("messaging")); |
| 389 | 389 |
| 390 // Lazy Background Page doesn't exist yet. | 390 // Lazy Background Page doesn't exist yet. |
| 391 ExtensionProcessManager* pm = | 391 extensions::ProcessManager* pm = |
| 392 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 392 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 393 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 393 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 394 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 394 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 395 | 395 |
| 396 // Navigate to a page that opens a message channel to the background page. | 396 // Navigate to a page that opens a message channel to the background page. |
| 397 ResultCatcher catcher; | 397 ResultCatcher catcher; |
| 398 LazyBackgroundObserver lazybg; | 398 LazyBackgroundObserver lazybg; |
| 399 ui_test_utils::NavigateToURL( | 399 ui_test_utils::NavigateToURL( |
| 400 browser(), embedded_test_server()->GetURL("/extensions/test_file.html")); | 400 browser(), embedded_test_server()->GetURL("/extensions/test_file.html")); |
| 401 lazybg.WaitUntilLoaded(); | 401 lazybg.WaitUntilLoaded(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 413 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 413 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 414 } | 414 } |
| 415 | 415 |
| 416 // Tests that the lazy background page receives the unload event when we | 416 // Tests that the lazy background page receives the unload event when we |
| 417 // close it, and that it can execute simple API calls that don't require an | 417 // close it, and that it can execute simple API calls that don't require an |
| 418 // asynchronous response. | 418 // asynchronous response. |
| 419 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnUnload) { | 419 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnUnload) { |
| 420 ASSERT_TRUE(LoadExtensionAndWait("on_unload")); | 420 ASSERT_TRUE(LoadExtensionAndWait("on_unload")); |
| 421 | 421 |
| 422 // Lazy Background Page has been shut down. | 422 // Lazy Background Page has been shut down. |
| 423 ExtensionProcessManager* pm = | 423 extensions::ProcessManager* pm = |
| 424 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 424 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 425 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 425 EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 426 | 426 |
| 427 // The browser action has a new title. | 427 // The browser action has a new title. |
| 428 BrowserActionTestUtil browser_action(browser()); | 428 BrowserActionTestUtil browser_action(browser()); |
| 429 ASSERT_EQ(1, browser_action.NumberOfBrowserActions()); | 429 ASSERT_EQ(1, browser_action.NumberOfBrowserActions()); |
| 430 EXPECT_EQ("Success", browser_action.GetTooltip(0)); | 430 EXPECT_EQ("Success", browser_action.GetTooltip(0)); |
| 431 } | 431 } |
| 432 | 432 |
| 433 // Tests that both a regular page and an event page will receive events when | 433 // Tests that both a regular page and an event page will receive events when |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 ASSERT_TRUE(extension); | 476 ASSERT_TRUE(extension); |
| 477 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 477 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
| 478 | 478 |
| 479 // The extension should've opened a new tab to an extension page. | 479 // The extension should've opened a new tab to an extension page. |
| 480 EXPECT_EQ(extension->GetResourceURL("extension_page.html").spec(), | 480 EXPECT_EQ(extension->GetResourceURL("extension_page.html").spec(), |
| 481 browser()->tab_strip_model()->GetActiveWebContents()-> | 481 browser()->tab_strip_model()->GetActiveWebContents()-> |
| 482 GetURL().spec()); | 482 GetURL().spec()); |
| 483 | 483 |
| 484 // Lazy Background Page still exists, because the extension created a new tab | 484 // Lazy Background Page still exists, because the extension created a new tab |
| 485 // to an extension page. | 485 // to an extension page. |
| 486 ExtensionProcessManager* pm = | 486 extensions::ProcessManager* pm = |
| 487 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); | 487 extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); |
| 488 EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); | 488 EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); |
| 489 | 489 |
| 490 // Close the new tab. | 490 // Close the new tab. |
| 491 LazyBackgroundObserver page_complete; | 491 LazyBackgroundObserver page_complete; |
| 492 browser()->tab_strip_model()->CloseWebContentsAt( | 492 browser()->tab_strip_model()->CloseWebContentsAt( |
| 493 browser()->tab_strip_model()->active_index(), TabStripModel::CLOSE_NONE); | 493 browser()->tab_strip_model()->active_index(), TabStripModel::CLOSE_NONE); |
| 494 page_complete.WaitUntilClosed(); | 494 page_complete.WaitUntilClosed(); |
| 495 | 495 |
| 496 // Lazy Background Page has been shut down. | 496 // Lazy Background Page has been shut down. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 511 | 511 |
| 512 // Tests that the lazy background page will be unloaded if the onSuspend event | 512 // Tests that the lazy background page will be unloaded if the onSuspend event |
| 513 // handler calls an API function such as chrome.storage.local.set(). | 513 // handler calls an API function such as chrome.storage.local.set(). |
| 514 // See: http://crbug.com/296834 | 514 // See: http://crbug.com/296834 |
| 515 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnSuspendUseStorageApi) { | 515 IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnSuspendUseStorageApi) { |
| 516 EXPECT_TRUE(LoadExtensionAndWait("on_suspend")); | 516 EXPECT_TRUE(LoadExtensionAndWait("on_suspend")); |
| 517 } | 517 } |
| 518 | 518 |
| 519 // TODO: background page with timer. | 519 // TODO: background page with timer. |
| 520 // TODO: background page that interacts with popup. | 520 // TODO: background page that interacts with popup. |
| OLD | NEW |