Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc

Issue 1158693006: Create a mechanism define declarative rules via the extension manifest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add thread safety to extensionregistry notifications Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 674
633 // The actual extension contents don't matter here -- we're just looking to 675 // The actual extension contents don't matter here -- we're just looking to
634 // trigger OnExtensionLoaded. 676 // trigger OnExtensionLoaded.
635 ext_dir_.WriteManifest(kDeclarativeContentManifest); 677 ext_dir_.WriteManifest(kDeclarativeContentManifest);
636 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers); 678 ext_dir_.WriteFile(FILE_PATH_LITERAL("background.js"), kBackgroundHelpers);
637 ASSERT_TRUE(LoadExtension(ext_dir_.unpacked_path())); 679 ASSERT_TRUE(LoadExtension(ext_dir_.unpacked_path()));
638 } 680 }
639 681
640 } // namespace 682 } // namespace
641 } // namespace extensions 683 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698