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 "chrome/browser/extensions/extension_action.h" | 5 #include "chrome/browser/extensions/extension_action.h" |
6 #include "chrome/browser/extensions/extension_action_manager.h" | 6 #include "chrome/browser/extensions/extension_action_manager.h" |
7 #include "chrome/browser/extensions/extension_action_test_util.h" | 7 #include "chrome/browser/extensions/extension_action_test_util.h" |
8 #include "chrome/browser/extensions/extension_apitest.h" | 8 #include "chrome/browser/extensions/extension_apitest.h" |
9 #include "chrome/browser/extensions/extension_tab_util.h" | 9 #include "chrome/browser/extensions/extension_tab_util.h" |
10 #include "chrome/browser/extensions/test_extension_dir.h" | 10 #include "chrome/browser/extensions/test_extension_dir.h" |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 | 307 |
308 EXPECT_TRUE(page_action->GetIsVisible(tab_id)); | 308 EXPECT_TRUE(page_action->GetIsVisible(tab_id)); |
309 | 309 |
310 const std::string kRemoveTestRule2 = "removeRule('2', 'remove_rule2');\n"; | 310 const std::string kRemoveTestRule2 = "removeRule('2', 'remove_rule2');\n"; |
311 EXPECT_EQ("remove_rule2", | 311 EXPECT_EQ("remove_rule2", |
312 ExecuteScriptInBackgroundPage(extension->id(), kRemoveTestRule2)); | 312 ExecuteScriptInBackgroundPage(extension->id(), kRemoveTestRule2)); |
313 | 313 |
314 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); | 314 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); |
315 } | 315 } |
316 | 316 |
| 317 // Tests that rules from manifest are added and evaluated properly. |
| 318 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, RulesAddedFromManifest) { |
| 319 const char manifest[] = |
| 320 "{\n" |
| 321 " \"name\": \"Declarative Content apitest\",\n" |
| 322 " \"version\": \"0.1\",\n" |
| 323 " \"manifest_version\": 2,\n" |
| 324 " \"page_action\": {},\n" |
| 325 " \"permissions\": [\n" |
| 326 " \"declarativeContent\"\n" |
| 327 " ],\n" |
| 328 " \"event_rules\": [{\n" |
| 329 " \"event\": \"declarativeContent.onPageChanged\",\n" |
| 330 " \"actions\": [{\n" |
| 331 " \"type\": \"declarativeContent.ShowPageAction\"\n" |
| 332 " }],\n" |
| 333 " \"conditions\": [{\n" |
| 334 " \"type\": \"declarativeContent.PageStateMatcher\",\n" |
| 335 " \"pageUrl\": {\"hostPrefix\": \"test1\"}\n" |
| 336 " }]\n" |
| 337 " }]\n" |
| 338 "}\n"; |
| 339 ext_dir_.WriteManifest(manifest); |
| 340 const Extension* extension = LoadExtension(ext_dir_.unpacked_path()); |
| 341 ASSERT_TRUE(extension); |
| 342 const ExtensionAction* page_action = |
| 343 ExtensionActionManager::Get(browser()->profile()) |
| 344 ->GetPageAction(*extension); |
| 345 ASSERT_TRUE(page_action); |
| 346 |
| 347 content::WebContents* const tab = |
| 348 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 349 const int tab_id = ExtensionTabUtil::GetTabId(tab); |
| 350 |
| 351 NavigateInRenderer(tab, GURL("http://blank/")); |
| 352 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); |
| 353 NavigateInRenderer(tab, GURL("http://test1/")); |
| 354 EXPECT_TRUE(page_action->GetIsVisible(tab_id)); |
| 355 NavigateInRenderer(tab, GURL("http://test2/")); |
| 356 EXPECT_FALSE(page_action->GetIsVisible(tab_id)); |
| 357 } |
| 358 |
317 // Tests that rules are not evaluated in incognito browser windows when the | 359 // Tests that rules are not evaluated in incognito browser windows when the |
318 // extension specifies spanning incognito mode but is not enabled for incognito. | 360 // extension specifies spanning incognito mode but is not enabled for incognito. |
319 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, | 361 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, |
320 DisabledForSpanningIncognito) { | 362 DisabledForSpanningIncognito) { |
321 CheckIncognito(SPANNING, false); | 363 CheckIncognito(SPANNING, false); |
322 } | 364 } |
323 | 365 |
324 // Tests that rules are evaluated in incognito browser windows when the | 366 // Tests that rules are evaluated in incognito browser windows when the |
325 // extension specifies spanning incognito mode and is enabled for incognito. | 367 // extension specifies spanning incognito mode and is enabled for incognito. |
326 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, EnabledForSpanningIncognito) { | 368 IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, EnabledForSpanningIncognito) { |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 " new PageStateMatcher({css: ['div input']});\n" | 658 " new PageStateMatcher({css: ['div input']});\n" |
617 " Return('Failed to throw');\n" | 659 " Return('Failed to throw');\n" |
618 "} catch (e) {\n" | 660 "} catch (e) {\n" |
619 " Return(e.message);\n" | 661 " Return(e.message);\n" |
620 "}\n"), | 662 "}\n"), |
621 testing::ContainsRegex("compound selector.*: div input$")); | 663 testing::ContainsRegex("compound selector.*: div input$")); |
622 } | 664 } |
623 | 665 |
624 } // namespace | 666 } // namespace |
625 } // namespace extensions | 667 } // namespace extensions |
OLD | NEW |