| 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/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 "\"incognito\": \"split\""); | 138 "\"incognito\": \"split\""); |
| 139 ASSERT_NE(kDeclarativeContentManifest, manifest); | 139 ASSERT_NE(kDeclarativeContentManifest, manifest); |
| 140 } | 140 } |
| 141 ext_dir_.WriteManifest(manifest); | 141 ext_dir_.WriteManifest(manifest); |
| 142 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), | 142 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), |
| 143 kIncognitoSpecificBackground); | 143 kIncognitoSpecificBackground); |
| 144 | 144 |
| 145 ExtensionTestMessageListener ready("ready", false); | 145 ExtensionTestMessageListener ready("ready", false); |
| 146 ExtensionTestMessageListener ready_incognito("ready (split)", false); | 146 ExtensionTestMessageListener ready_incognito("ready (split)", false); |
| 147 | 147 |
| 148 const Extension* extension = is_enabled_in_incognito ? | 148 const Extension* extension = |
| 149 LoadExtensionIncognito(ext_dir_.unpacked_path()) : | 149 is_enabled_in_incognito ? LoadExtensionIncognito(ext_dir_.UnpackedPath()) |
| 150 LoadExtension(ext_dir_.unpacked_path()); | 150 : LoadExtension(ext_dir_.UnpackedPath()); |
| 151 ASSERT_TRUE(extension); | 151 ASSERT_TRUE(extension); |
| 152 | 152 |
| 153 Browser* incognito_browser = CreateIncognitoBrowser(); | 153 Browser* incognito_browser = CreateIncognitoBrowser(); |
| 154 const ExtensionAction* incognito_page_action = | 154 const ExtensionAction* incognito_page_action = |
| 155 ExtensionActionManager::Get(incognito_browser->profile())-> | 155 ExtensionActionManager::Get(incognito_browser->profile())-> |
| 156 GetPageAction(*extension); | 156 GetPageAction(*extension); |
| 157 ASSERT_TRUE(incognito_page_action); | 157 ASSERT_TRUE(incognito_page_action); |
| 158 | 158 |
| 159 ASSERT_TRUE(ready.WaitUntilSatisfied()); | 159 ASSERT_TRUE(ready.WaitUntilSatisfied()); |
| 160 if (is_enabled_in_incognito && mode == SPLIT) | 160 if (is_enabled_in_incognito && mode == SPLIT) |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 } | 200 } |
| 201 | 201 |
| 202 void DeclarativeContentApiTest::CheckBookmarkEvents(bool match_is_bookmarked) { | 202 void DeclarativeContentApiTest::CheckBookmarkEvents(bool match_is_bookmarked) { |
| 203 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 203 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 204 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); | 204 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); |
| 205 | 205 |
| 206 content::WebContents* const tab = | 206 content::WebContents* const tab = |
| 207 browser()->tab_strip_model()->GetWebContentsAt(0); | 207 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 208 const int tab_id = ExtensionTabUtil::GetTabId(tab); | 208 const int tab_id = ExtensionTabUtil::GetTabId(tab); |
| 209 | 209 |
| 210 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 210 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 211 ASSERT_TRUE(extension); | 211 ASSERT_TRUE(extension); |
| 212 const ExtensionAction* page_action = ExtensionActionManager::Get( | 212 const ExtensionAction* page_action = ExtensionActionManager::Get( |
| 213 browser()->profile())->GetPageAction(*extension); | 213 browser()->profile())->GetPageAction(*extension); |
| 214 ASSERT_TRUE(page_action); | 214 ASSERT_TRUE(page_action); |
| 215 | 215 |
| 216 NavigateInRenderer(tab, GURL("http://test1/")); | 216 NavigateInRenderer(tab, GURL("http://test1/")); |
| 217 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); | 217 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); |
| 218 | 218 |
| 219 static const char kSetIsBookmarkedRule[] = | 219 static const char kSetIsBookmarkedRule[] = |
| 220 "setRules([{\n" | 220 "setRules([{\n" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 "}\n" | 271 "}\n" |
| 272 "\n" | 272 "\n" |
| 273 "var testEvent = chrome.declarativeContent.onPageChanged;\n" | 273 "var testEvent = chrome.declarativeContent.onPageChanged;\n" |
| 274 "\n" | 274 "\n" |
| 275 "testEvent.removeRules(undefined, function() {\n" | 275 "testEvent.removeRules(undefined, function() {\n" |
| 276 " testEvent.addRules([rule], function() {\n" | 276 " testEvent.addRules([rule], function() {\n" |
| 277 " chrome.test.sendMessage(\"ready\")\n" | 277 " chrome.test.sendMessage(\"ready\")\n" |
| 278 " });\n" | 278 " });\n" |
| 279 "});\n"); | 279 "});\n"); |
| 280 ExtensionTestMessageListener ready("ready", false); | 280 ExtensionTestMessageListener ready("ready", false); |
| 281 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 281 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 282 ASSERT_TRUE(extension); | 282 ASSERT_TRUE(extension); |
| 283 const ExtensionAction* page_action = | 283 const ExtensionAction* page_action = |
| 284 ExtensionActionManager::Get(browser()->profile())-> | 284 ExtensionActionManager::Get(browser()->profile())-> |
| 285 GetPageAction(*extension); | 285 GetPageAction(*extension); |
| 286 ASSERT_TRUE(page_action); | 286 ASSERT_TRUE(page_action); |
| 287 | 287 |
| 288 ASSERT_TRUE(ready.WaitUntilSatisfied()); | 288 ASSERT_TRUE(ready.WaitUntilSatisfied()); |
| 289 content::WebContents* const tab = | 289 content::WebContents* const tab = |
| 290 browser()->tab_strip_model()->GetWebContentsAt(0); | 290 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 291 const int tab_id = ExtensionTabUtil::GetTabId(tab); | 291 const int tab_id = ExtensionTabUtil::GetTabId(tab); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 "};\n" | 351 "};\n" |
| 352 "\n" | 352 "\n" |
| 353 "var testEvent = chrome.declarativeContent.onPageChanged;\n" | 353 "var testEvent = chrome.declarativeContent.onPageChanged;\n" |
| 354 "\n" | 354 "\n" |
| 355 "testEvent.removeRules(undefined, function() {\n" | 355 "testEvent.removeRules(undefined, function() {\n" |
| 356 " testEvent.addRules([rule1, rule2], function() {\n" | 356 " testEvent.addRules([rule1, rule2], function() {\n" |
| 357 " chrome.test.sendMessage(\"ready\");\n" | 357 " chrome.test.sendMessage(\"ready\");\n" |
| 358 " });\n" | 358 " });\n" |
| 359 "});\n"); | 359 "});\n"); |
| 360 ExtensionTestMessageListener ready("ready", false); | 360 ExtensionTestMessageListener ready("ready", false); |
| 361 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 361 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 362 ASSERT_TRUE(extension); | 362 ASSERT_TRUE(extension); |
| 363 const ExtensionAction* page_action = | 363 const ExtensionAction* page_action = |
| 364 ExtensionActionManager::Get(browser()->profile()) | 364 ExtensionActionManager::Get(browser()->profile()) |
| 365 ->GetPageAction(*extension); | 365 ->GetPageAction(*extension); |
| 366 ASSERT_TRUE(page_action); | 366 ASSERT_TRUE(page_action); |
| 367 | 367 |
| 368 ASSERT_TRUE(ready.WaitUntilSatisfied()); | 368 ASSERT_TRUE(ready.WaitUntilSatisfied()); |
| 369 content::WebContents* const tab = | 369 content::WebContents* const tab = |
| 370 browser()->tab_strip_model()->GetWebContentsAt(0); | 370 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 371 const int tab_id = ExtensionTabUtil::GetTabId(tab); | 371 const int tab_id = ExtensionTabUtil::GetTabId(tab); |
| 372 | 372 |
| 373 // This navigation matches both rules. | 373 // This navigation matches both rules. |
| 374 NavigateInRenderer(tab, GURL("http://test1/")); | 374 NavigateInRenderer(tab, GURL("http://test1/")); |
| 375 | 375 |
| 376 EXPECT_TRUE(page_action->GetIsVisible(tab_id)); | 376 EXPECT_TRUE(page_action->GetIsVisible(tab_id)); |
| 377 } | 377 } |
| 378 | 378 |
| 379 // Tests that the rules are evaluated at the time they are added or removed. | 379 // Tests that the rules are evaluated at the time they are added or removed. |
| 380 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, RulesEvaluatedOnAddRemove) { | 380 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, RulesEvaluatedOnAddRemove) { |
| 381 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 381 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 382 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); | 382 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); |
| 383 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 383 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 384 ASSERT_TRUE(extension); | 384 ASSERT_TRUE(extension); |
| 385 const ExtensionAction* page_action = | 385 const ExtensionAction* page_action = |
| 386 ExtensionActionManager::Get(browser()->profile())-> | 386 ExtensionActionManager::Get(browser()->profile())-> |
| 387 GetPageAction(*extension); | 387 GetPageAction(*extension); |
| 388 ASSERT_TRUE(page_action); | 388 ASSERT_TRUE(page_action); |
| 389 | 389 |
| 390 content::WebContents* const tab = | 390 content::WebContents* const tab = |
| 391 browser()->tab_strip_model()->GetWebContentsAt(0); | 391 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 392 const int tab_id = ExtensionTabUtil::GetTabId(tab); | 392 const int tab_id = ExtensionTabUtil::GetTabId(tab); |
| 393 | 393 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 " \"actions\": [{\n" | 443 " \"actions\": [{\n" |
| 444 " \"type\": \"declarativeContent.ShowPageAction\"\n" | 444 " \"type\": \"declarativeContent.ShowPageAction\"\n" |
| 445 " }],\n" | 445 " }],\n" |
| 446 " \"conditions\": [{\n" | 446 " \"conditions\": [{\n" |
| 447 " \"type\": \"declarativeContent.PageStateMatcher\",\n" | 447 " \"type\": \"declarativeContent.PageStateMatcher\",\n" |
| 448 " \"pageUrl\": {\"hostPrefix\": \"test1\"}\n" | 448 " \"pageUrl\": {\"hostPrefix\": \"test1\"}\n" |
| 449 " }]\n" | 449 " }]\n" |
| 450 " }]\n" | 450 " }]\n" |
| 451 "}\n"; | 451 "}\n"; |
| 452 ext_dir_.WriteManifest(manifest); | 452 ext_dir_.WriteManifest(manifest); |
| 453 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 453 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 454 ASSERT_TRUE(extension); | 454 ASSERT_TRUE(extension); |
| 455 const ExtensionAction* page_action = | 455 const ExtensionAction* page_action = |
| 456 ExtensionActionManager::Get(browser()->profile()) | 456 ExtensionActionManager::Get(browser()->profile()) |
| 457 ->GetPageAction(*extension); | 457 ->GetPageAction(*extension); |
| 458 ASSERT_TRUE(page_action); | 458 ASSERT_TRUE(page_action); |
| 459 | 459 |
| 460 content::WebContents* const tab = | 460 content::WebContents* const tab = |
| 461 browser()->tab_strip_model()->GetWebContentsAt(0); | 461 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 462 const int tab_id = ExtensionTabUtil::GetTabId(tab); | 462 const int tab_id = ExtensionTabUtil::GetTabId(tab); |
| 463 | 463 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 content::WebContents* const incognito_tab = | 502 content::WebContents* const incognito_tab = |
| 503 incognito_browser->tab_strip_model()->GetWebContentsAt(0); | 503 incognito_browser->tab_strip_model()->GetWebContentsAt(0); |
| 504 const int incognito_tab_id = ExtensionTabUtil::GetTabId(incognito_tab); | 504 const int incognito_tab_id = ExtensionTabUtil::GetTabId(incognito_tab); |
| 505 | 505 |
| 506 NavigateInRenderer(incognito_tab, GURL("http://test_normal/")); | 506 NavigateInRenderer(incognito_tab, GURL("http://test_normal/")); |
| 507 | 507 |
| 508 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 508 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 509 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), | 509 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), |
| 510 kIncognitoSpecificBackground); | 510 kIncognitoSpecificBackground); |
| 511 ExtensionTestMessageListener ready("ready", false); | 511 ExtensionTestMessageListener ready("ready", false); |
| 512 const Extension* extension = LoadExtensionIncognito(ext_dir_.unpacked_path()); | 512 const Extension* extension = LoadExtensionIncognito(ext_dir_.UnpackedPath()); |
| 513 ASSERT_TRUE(extension); | 513 ASSERT_TRUE(extension); |
| 514 ASSERT_TRUE(ready.WaitUntilSatisfied()); | 514 ASSERT_TRUE(ready.WaitUntilSatisfied()); |
| 515 | 515 |
| 516 const ExtensionAction* incognito_page_action = | 516 const ExtensionAction* incognito_page_action = |
| 517 ExtensionActionManager::Get(incognito_browser->profile())-> | 517 ExtensionActionManager::Get(incognito_browser->profile())-> |
| 518 GetPageAction(*extension); | 518 GetPageAction(*extension); |
| 519 ASSERT_TRUE(incognito_page_action); | 519 ASSERT_TRUE(incognito_page_action); |
| 520 | 520 |
| 521 // The page action should be shown. | 521 // The page action should be shown. |
| 522 EXPECT_TRUE(incognito_page_action->GetIsVisible(incognito_tab_id)); | 522 EXPECT_TRUE(incognito_page_action->GetIsVisible(incognito_tab_id)); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 // Fails on XP: http://crbug.com/515717 | 592 // Fails on XP: http://crbug.com/515717 |
| 593 #define MAYBE_UninstallWhileActivePageAction \ | 593 #define MAYBE_UninstallWhileActivePageAction \ |
| 594 DISABLED_UninstallWhileActivePageAction | 594 DISABLED_UninstallWhileActivePageAction |
| 595 #else | 595 #else |
| 596 #define MAYBE_UninstallWhileActivePageAction UninstallWhileActivePageAction | 596 #define MAYBE_UninstallWhileActivePageAction UninstallWhileActivePageAction |
| 597 #endif | 597 #endif |
| 598 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, | 598 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, |
| 599 MAYBE_UninstallWhileActivePageAction) { | 599 MAYBE_UninstallWhileActivePageAction) { |
| 600 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 600 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 601 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); | 601 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); |
| 602 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 602 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 603 ASSERT_TRUE(extension); | 603 ASSERT_TRUE(extension); |
| 604 const std::string extension_id = extension->id(); | 604 const std::string extension_id = extension->id(); |
| 605 const ExtensionAction* page_action = ExtensionActionManager::Get( | 605 const ExtensionAction* page_action = ExtensionActionManager::Get( |
| 606 browser()->profile())->GetPageAction(*extension); | 606 browser()->profile())->GetPageAction(*extension); |
| 607 ASSERT_TRUE(page_action); | 607 ASSERT_TRUE(page_action); |
| 608 | 608 |
| 609 const std::string kTestRule = | 609 const std::string kTestRule = |
| 610 "setRules([{\n" | 610 "setRules([{\n" |
| 611 " conditions: [new PageStateMatcher({\n" | 611 " conditions: [new PageStateMatcher({\n" |
| 612 " pageUrl: {hostPrefix: \"test\"}})],\n" | 612 " pageUrl: {hostPrefix: \"test\"}})],\n" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 content::WebContents* const tab = | 651 content::WebContents* const tab = |
| 652 browser()->tab_strip_model()->GetWebContentsAt(0); | 652 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 653 const int tab_id = ExtensionTabUtil::GetTabId(tab); | 653 const int tab_id = ExtensionTabUtil::GetTabId(tab); |
| 654 | 654 |
| 655 ASSERT_TRUE(content::ExecuteScript( | 655 ASSERT_TRUE(content::ExecuteScript( |
| 656 tab, "document.body.innerHTML = '<iframe src=\"http://test2\">';")); | 656 tab, "document.body.innerHTML = '<iframe src=\"http://test2\">';")); |
| 657 // Replace the iframe to destroy its WebFrame. | 657 // Replace the iframe to destroy its WebFrame. |
| 658 ASSERT_TRUE(content::ExecuteScript( | 658 ASSERT_TRUE(content::ExecuteScript( |
| 659 tab, "document.body.innerHTML = '<span class=\"foo\">';")); | 659 tab, "document.body.innerHTML = '<span class=\"foo\">';")); |
| 660 | 660 |
| 661 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 661 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 662 ASSERT_TRUE(extension); | 662 ASSERT_TRUE(extension); |
| 663 const ExtensionAction* page_action = ExtensionActionManager::Get( | 663 const ExtensionAction* page_action = ExtensionActionManager::Get( |
| 664 browser()->profile())->GetPageAction(*extension); | 664 browser()->profile())->GetPageAction(*extension); |
| 665 ASSERT_TRUE(page_action); | 665 ASSERT_TRUE(page_action); |
| 666 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); | 666 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); |
| 667 | 667 |
| 668 EXPECT_EQ("rule0", | 668 EXPECT_EQ("rule0", |
| 669 ExecuteScriptInBackgroundPage( | 669 ExecuteScriptInBackgroundPage( |
| 670 extension->id(), | 670 extension->id(), |
| 671 "setRules([{\n" | 671 "setRules([{\n" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 709 | 709 |
| 710 void RunTest() { | 710 void RunTest() { |
| 711 // Load an extension without a page action. | 711 // Load an extension without a page action. |
| 712 std::string manifest_without_page_action = kDeclarativeContentManifest; | 712 std::string manifest_without_page_action = kDeclarativeContentManifest; |
| 713 base::ReplaceSubstringsAfterOffset(&manifest_without_page_action, 0, | 713 base::ReplaceSubstringsAfterOffset(&manifest_without_page_action, 0, |
| 714 "\"page_action\": {},", ""); | 714 "\"page_action\": {},", ""); |
| 715 ASSERT_NE(kDeclarativeContentManifest, manifest_without_page_action); | 715 ASSERT_NE(kDeclarativeContentManifest, manifest_without_page_action); |
| 716 ext_dir_.WriteManifest(manifest_without_page_action); | 716 ext_dir_.WriteManifest(manifest_without_page_action); |
| 717 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); | 717 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); |
| 718 | 718 |
| 719 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 719 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 720 ASSERT_TRUE(extension); | 720 ASSERT_TRUE(extension); |
| 721 | 721 |
| 722 const char kScript[] = | 722 const char kScript[] = |
| 723 "setRules([{\n" | 723 "setRules([{\n" |
| 724 " conditions: [new PageStateMatcher({\n" | 724 " conditions: [new PageStateMatcher({\n" |
| 725 " pageUrl: {hostPrefix: \"test\"}})],\n" | 725 " pageUrl: {hostPrefix: \"test\"}})],\n" |
| 726 " actions: [new ShowPageAction()]\n" | 726 " actions: [new ShowPageAction()]\n" |
| 727 "}], 'test_rule');\n"; | 727 "}], 'test_rule');\n"; |
| 728 const char kErrorSubstr[] = "without a page action"; | 728 const char kErrorSubstr[] = "without a page action"; |
| 729 std::string result = | 729 std::string result = |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 792 | 792 |
| 793 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, | 793 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, |
| 794 CanonicalizesPageStateMatcherCss) { | 794 CanonicalizesPageStateMatcherCss) { |
| 795 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 795 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 796 ext_dir_.WriteFile( | 796 ext_dir_.WriteFile( |
| 797 FILE_PATH_LITERAL("background.js"), | 797 FILE_PATH_LITERAL("background.js"), |
| 798 "var PageStateMatcher = chrome.declarativeContent.PageStateMatcher;\n" | 798 "var PageStateMatcher = chrome.declarativeContent.PageStateMatcher;\n" |
| 799 "function Return(obj) {\n" | 799 "function Return(obj) {\n" |
| 800 " window.domAutomationController.send('' + obj);\n" | 800 " window.domAutomationController.send('' + obj);\n" |
| 801 "}\n"); | 801 "}\n"); |
| 802 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 802 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 803 ASSERT_TRUE(extension); | 803 ASSERT_TRUE(extension); |
| 804 | 804 |
| 805 EXPECT_EQ("input[type=\"password\"]", | 805 EXPECT_EQ("input[type=\"password\"]", |
| 806 ExecuteScriptInBackgroundPage( | 806 ExecuteScriptInBackgroundPage( |
| 807 extension->id(), | 807 extension->id(), |
| 808 "var psm = new PageStateMatcher(\n" | 808 "var psm = new PageStateMatcher(\n" |
| 809 " {css: [\"input[type='password']\"]});\n" | 809 " {css: [\"input[type='password']\"]});\n" |
| 810 "Return(psm.css);")); | 810 "Return(psm.css);")); |
| 811 | 811 |
| 812 EXPECT_THAT(ExecuteScriptInBackgroundPage( | 812 EXPECT_THAT(ExecuteScriptInBackgroundPage( |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 869 // Add a web contents to the tab strip in a way that doesn't trigger | 869 // Add a web contents to the tab strip in a way that doesn't trigger |
| 870 // NOTIFICATION_TAB_ADDED. | 870 // NOTIFICATION_TAB_ADDED. |
| 871 content::WebContents* contents = content::WebContents::Create( | 871 content::WebContents* contents = content::WebContents::Create( |
| 872 content::WebContents::CreateParams(profile())); | 872 content::WebContents::CreateParams(profile())); |
| 873 browser()->tab_strip_model()->AppendWebContents(contents, false); | 873 browser()->tab_strip_model()->AppendWebContents(contents, false); |
| 874 | 874 |
| 875 // The actual extension contents don't matter here -- we're just looking to | 875 // The actual extension contents don't matter here -- we're just looking to |
| 876 // trigger OnExtensionLoaded. | 876 // trigger OnExtensionLoaded. |
| 877 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 877 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 878 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); | 878 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); |
| 879 ASSERT_TRUE(LoadExtension(ext_dir_.unpacked_path())); | 879 ASSERT_TRUE(LoadExtension(ext_dir_.UnpackedPath())); |
| 880 } | 880 } |
| 881 | 881 |
| 882 // https://crbug.com/501225 | 882 // https://crbug.com/501225 |
| 883 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, | 883 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, |
| 884 PendingWebContentsClearedOnRemoveRules) { | 884 PendingWebContentsClearedOnRemoveRules) { |
| 885 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 885 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 886 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); | 886 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); |
| 887 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 887 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 888 ASSERT_TRUE(extension); | 888 ASSERT_TRUE(extension); |
| 889 const ExtensionAction* page_action = ExtensionActionManager::Get( | 889 const ExtensionAction* page_action = ExtensionActionManager::Get( |
| 890 browser()->profile())->GetPageAction(*extension); | 890 browser()->profile())->GetPageAction(*extension); |
| 891 ASSERT_TRUE(page_action); | 891 ASSERT_TRUE(page_action); |
| 892 | 892 |
| 893 // Create two tabs. | 893 // Create two tabs. |
| 894 content::WebContents* const tab1 = | 894 content::WebContents* const tab1 = |
| 895 browser()->tab_strip_model()->GetWebContentsAt(0); | 895 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 896 | 896 |
| 897 AddTabAtIndex(1, GURL("http://test2/"), ui::PAGE_TRANSITION_LINK); | 897 AddTabAtIndex(1, GURL("http://test2/"), ui::PAGE_TRANSITION_LINK); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 #else | 936 #else |
| 937 #define MAYBE_RemoveAllRulesAfterExtensionUninstall \ | 937 #define MAYBE_RemoveAllRulesAfterExtensionUninstall \ |
| 938 RemoveAllRulesAfterExtensionUninstall | 938 RemoveAllRulesAfterExtensionUninstall |
| 939 #endif | 939 #endif |
| 940 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, | 940 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, |
| 941 MAYBE_RemoveAllRulesAfterExtensionUninstall) { | 941 MAYBE_RemoveAllRulesAfterExtensionUninstall) { |
| 942 ext_dir_.WriteManifest(kDeclarativeContentManifest); | 942 ext_dir_.WriteManifest(kDeclarativeContentManifest); |
| 943 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); | 943 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); |
| 944 | 944 |
| 945 // Load the extension, add a rule, then uninstall the extension. | 945 // Load the extension, add a rule, then uninstall the extension. |
| 946 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); | 946 const Extension* extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 947 ASSERT_TRUE(extension); | 947 ASSERT_TRUE(extension); |
| 948 | 948 |
| 949 const std::string kAddTestRule = | 949 const std::string kAddTestRule = |
| 950 "addRules([{\n" | 950 "addRules([{\n" |
| 951 " id: '1',\n" | 951 " id: '1',\n" |
| 952 " conditions: [],\n" | 952 " conditions: [],\n" |
| 953 " actions: [new ShowPageAction()]\n" | 953 " actions: [new ShowPageAction()]\n" |
| 954 "}], 'add_rule');\n"; | 954 "}], 'add_rule');\n"; |
| 955 EXPECT_EQ("add_rule", | 955 EXPECT_EQ("add_rule", |
| 956 ExecuteScriptInBackgroundPage(extension->id(), kAddTestRule)); | 956 ExecuteScriptInBackgroundPage(extension->id(), kAddTestRule)); |
| 957 | 957 |
| 958 ExtensionService* extension_service = extensions::ExtensionSystem::Get( | 958 ExtensionService* extension_service = extensions::ExtensionSystem::Get( |
| 959 browser()->profile())->extension_service(); | 959 browser()->profile())->extension_service(); |
| 960 | 960 |
| 961 base::string16 error; | 961 base::string16 error; |
| 962 ASSERT_TRUE(extension_service->UninstallExtension( | 962 ASSERT_TRUE(extension_service->UninstallExtension( |
| 963 extension->id(), | 963 extension->id(), |
| 964 UNINSTALL_REASON_FOR_TESTING, | 964 UNINSTALL_REASON_FOR_TESTING, |
| 965 base::Bind(&base::DoNothing), | 965 base::Bind(&base::DoNothing), |
| 966 &error)); | 966 &error)); |
| 967 ASSERT_EQ(base::ASCIIToUTF16(""), error); | 967 ASSERT_EQ(base::ASCIIToUTF16(""), error); |
| 968 | 968 |
| 969 // Reload the extension, then add and remove a rule. | 969 // Reload the extension, then add and remove a rule. |
| 970 extension = LoadExtension(ext_dir_.unpacked_path()); | 970 extension = LoadExtension(ext_dir_.UnpackedPath()); |
| 971 ASSERT_TRUE(extension); | 971 ASSERT_TRUE(extension); |
| 972 | 972 |
| 973 EXPECT_EQ("add_rule", | 973 EXPECT_EQ("add_rule", |
| 974 ExecuteScriptInBackgroundPage(extension->id(), kAddTestRule)); | 974 ExecuteScriptInBackgroundPage(extension->id(), kAddTestRule)); |
| 975 | 975 |
| 976 const std::string kRemoveTestRule1 = "removeRule('1', 'remove_rule1');\n"; | 976 const std::string kRemoveTestRule1 = "removeRule('1', 'remove_rule1');\n"; |
| 977 EXPECT_EQ("remove_rule1", | 977 EXPECT_EQ("remove_rule1", |
| 978 ExecuteScriptInBackgroundPage(extension->id(), kRemoveTestRule1)); | 978 ExecuteScriptInBackgroundPage(extension->id(), kRemoveTestRule1)); |
| 979 } | 979 } |
| 980 | 980 |
| 981 | 981 |
| 982 // TODO(wittman): Once ChromeContentRulesRegistry operates on condition and | 982 // TODO(wittman): Once ChromeContentRulesRegistry operates on condition and |
| 983 // action interfaces, add a test that checks that a navigation always evaluates | 983 // action interfaces, add a test that checks that a navigation always evaluates |
| 984 // consistent URL state for all conditions. i.e.: if condition1 evaluates to | 984 // consistent URL state for all conditions. i.e.: if condition1 evaluates to |
| 985 // false on url0 and true on url1, and condition2 evaluates to true on url0 and | 985 // false on url0 and true on url1, and condition2 evaluates to true on url0 and |
| 986 // false on url1, navigate from url0 to url1 and validate that no action is | 986 // false on url1, navigate from url0 to url1 and validate that no action is |
| 987 // triggered. Do the same when navigating back to url0. This kind of test is | 987 // triggered. Do the same when navigating back to url0. This kind of test is |
| 988 // unfortunately not feasible with the current implementation and the existing | 988 // unfortunately not feasible with the current implementation and the existing |
| 989 // supported conditions and actions. | 989 // supported conditions and actions. |
| 990 | 990 |
| 991 } // namespace | 991 } // namespace |
| 992 } // namespace extensions | 992 } // namespace extensions |
| OLD | NEW |