Commit 4cab481f authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions UI] Split up some ExtensionActionViewController tests

Split apart some ExtensionActionViewController related unittests that
were exercising multiple scenarios. Specifically:

ExtensionActionWantsToRunAppearance ->
    ExtensionActionWantsToRunAppearance +
    OverflowedPageActionAppearance

ExtensionActionBlockedActions ->
    BrowserActionBlockedActions +
    PageActionBlockedActions +
    PageActionBlockedActionsInOverflow

This will help with adapting these to the ExtensionsMenu behavior,
which will be done in a followup.

This does not change any behavior in production.

Bug: 984654

Change-Id: Iadd2374321ae8868a2b846049ad9886e4bf35e0f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1938307Reviewed-by: default avatarPeter Boström <pbos@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#722616}
parent 0ff8bc07
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
// Tests the icon appearance of extension actions with the toolbar redesign. // Tests the icon appearance of extension actions with the toolbar redesign.
// Extensions that don't want to run should have their icons grayscaled. // Extensions that don't want to run should have their icons grayscaled.
// Overflowed extensions that want to run should have an additional decoration.
TEST_P(ToolbarActionsBarUnitTest, ExtensionActionWantsToRunAppearance) { TEST_P(ToolbarActionsBarUnitTest, ExtensionActionWantsToRunAppearance) {
CreateAndAddExtension("extension", CreateAndAddExtension("extension",
extensions::ExtensionBuilder::ActionType::PAGE_ACTION); extensions::ExtensionBuilder::ActionType::PAGE_ACTION);
...@@ -59,27 +58,45 @@ TEST_P(ToolbarActionsBarUnitTest, ExtensionActionWantsToRunAppearance) { ...@@ -59,27 +58,45 @@ TEST_P(ToolbarActionsBarUnitTest, ExtensionActionWantsToRunAppearance) {
EXPECT_FALSE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_FALSE(image_source->paint_blocked_actions_decoration()); EXPECT_FALSE(image_source->paint_blocked_actions_decoration());
}
// Tests that overflowed extensions with page actions that want to run have an
// additional decoration.
TEST_P(ToolbarActionsBarUnitTest, OverflowedPageActionAppearance) {
CreateAndAddExtension("extension",
extensions::ExtensionBuilder::ActionType::PAGE_ACTION);
EXPECT_EQ(1u, toolbar_actions_bar()->GetIconCount());
EXPECT_EQ(0u, overflow_bar()->GetIconCount());
AddTab(browser(), GURL("chrome://newtab"));
const gfx::Size size = toolbar_actions_bar()->GetViewSize();
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
toolbar_model()->SetVisibleIconCount(0u); toolbar_model()->SetVisibleIconCount(0u);
EXPECT_EQ(0u, toolbar_actions_bar()->GetIconCount()); EXPECT_EQ(0u, toolbar_actions_bar()->GetIconCount());
EXPECT_EQ(1u, overflow_bar()->GetIconCount()); EXPECT_EQ(1u, overflow_bar()->GetIconCount());
action = static_cast<ExtensionActionViewController*>( ExtensionActionViewController* action =
overflow_bar()->GetActions()[0]); static_cast<ExtensionActionViewController*>(
image_source = action->GetIconImageSourceForTesting(web_contents, size); overflow_bar()->GetActions()[0]);
EXPECT_FALSE(image_source->grayscale()); std::unique_ptr<IconWithBadgeImageSource> image_source =
EXPECT_TRUE(image_source->paint_page_action_decoration()); action->GetIconImageSourceForTesting(web_contents, size);
EXPECT_TRUE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_FALSE(image_source->paint_blocked_actions_decoration()); EXPECT_FALSE(image_source->paint_blocked_actions_decoration());
SetActionWantsToRunOnTab(action->extension_action(), web_contents, false); SetActionWantsToRunOnTab(action->extension_action(), web_contents, true);
image_source = action->GetIconImageSourceForTesting(web_contents, size); image_source = action->GetIconImageSourceForTesting(web_contents, size);
EXPECT_TRUE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_TRUE(image_source->paint_page_action_decoration());
EXPECT_FALSE(image_source->paint_blocked_actions_decoration()); EXPECT_FALSE(image_source->paint_blocked_actions_decoration());
} }
TEST_P(ToolbarActionsBarUnitTest, ExtensionActionBlockedActions) { // Tests the appearance of browser actions with blocked script actions.
scoped_refptr<const extensions::Extension> browser_action_ext = TEST_P(ToolbarActionsBarUnitTest, BrowserActionBlockedActions) {
scoped_refptr<const extensions::Extension> extension =
extensions::ExtensionBuilder("browser action") extensions::ExtensionBuilder("browser action")
.SetAction(extensions::ExtensionBuilder::ActionType::BROWSER_ACTION) .SetAction(extensions::ExtensionBuilder::ActionType::BROWSER_ACTION)
.SetLocation(extensions::Manifest::INTERNAL) .SetLocation(extensions::Manifest::INTERNAL)
...@@ -88,26 +105,26 @@ TEST_P(ToolbarActionsBarUnitTest, ExtensionActionBlockedActions) { ...@@ -88,26 +105,26 @@ TEST_P(ToolbarActionsBarUnitTest, ExtensionActionBlockedActions) {
extensions::ExtensionService* service = extensions::ExtensionService* service =
extensions::ExtensionSystem::Get(profile())->extension_service(); extensions::ExtensionSystem::Get(profile())->extension_service();
service->GrantPermissions(browser_action_ext.get()); service->GrantPermissions(extension.get());
service->AddExtension(browser_action_ext.get()); service->AddExtension(extension.get());
extensions::ScriptingPermissionsModifier permissions_modifier_browser_ext( extensions::ScriptingPermissionsModifier permissions_modifier(profile(),
profile(), browser_action_ext); extension);
permissions_modifier_browser_ext.SetWithholdHostPermissions(true); permissions_modifier.SetWithholdHostPermissions(true);
ASSERT_EQ(1u, toolbar_actions_bar()->GetIconCount()); ASSERT_EQ(1u, toolbar_actions_bar()->GetIconCount());
AddTab(browser(), GURL("https://www.google.com/")); AddTab(browser(), GURL("https://www.google.com/"));
ExtensionActionViewController* browser_action = ExtensionActionViewController* action_controller =
static_cast<ExtensionActionViewController*>( static_cast<ExtensionActionViewController*>(
toolbar_actions_bar()->GetActions()[0]); toolbar_actions_bar()->GetActions()[0]);
EXPECT_EQ(browser_action_ext.get(), browser_action->extension()); EXPECT_EQ(extension.get(), action_controller->extension());
content::WebContents* web_contents = content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents(); browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(web_contents); ASSERT_TRUE(web_contents);
const gfx::Size size = toolbar_actions_bar()->GetViewSize(); const gfx::Size size = toolbar_actions_bar()->GetViewSize();
std::unique_ptr<IconWithBadgeImageSource> image_source = std::unique_ptr<IconWithBadgeImageSource> image_source =
browser_action->GetIconImageSourceForTesting(web_contents, size); action_controller->GetIconImageSourceForTesting(web_contents, size);
EXPECT_FALSE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_FALSE(image_source->paint_blocked_actions_decoration()); EXPECT_FALSE(image_source->paint_blocked_actions_decoration());
...@@ -116,78 +133,120 @@ TEST_P(ToolbarActionsBarUnitTest, ExtensionActionBlockedActions) { ...@@ -116,78 +133,120 @@ TEST_P(ToolbarActionsBarUnitTest, ExtensionActionBlockedActions) {
extensions::ExtensionActionRunner::GetForWebContents(web_contents); extensions::ExtensionActionRunner::GetForWebContents(web_contents);
ASSERT_TRUE(action_runner); ASSERT_TRUE(action_runner);
action_runner->RequestScriptInjectionForTesting( action_runner->RequestScriptInjectionForTesting(
browser_action_ext.get(), extensions::UserScript::DOCUMENT_IDLE, extension.get(), extensions::UserScript::DOCUMENT_IDLE,
base::DoNothing()); base::DoNothing());
image_source = image_source =
browser_action->GetIconImageSourceForTesting(web_contents, size); action_controller->GetIconImageSourceForTesting(web_contents, size);
EXPECT_FALSE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_TRUE(image_source->paint_blocked_actions_decoration()); EXPECT_TRUE(image_source->paint_blocked_actions_decoration());
action_runner->RunForTesting(browser_action_ext.get()); action_runner->RunForTesting(extension.get());
image_source = image_source =
browser_action->GetIconImageSourceForTesting(web_contents, size); action_controller->GetIconImageSourceForTesting(web_contents, size);
EXPECT_FALSE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_FALSE(image_source->paint_blocked_actions_decoration()); EXPECT_FALSE(image_source->paint_blocked_actions_decoration());
}
scoped_refptr<const extensions::Extension> page_action_ext = // Tests the appearance of page actions with blocked script actions.
TEST_P(ToolbarActionsBarUnitTest, PageActionBlockedActions) {
scoped_refptr<const extensions::Extension> extension =
extensions::ExtensionBuilder("page action") extensions::ExtensionBuilder("page action")
.SetAction(extensions::ExtensionBuilder::ActionType::PAGE_ACTION) .SetAction(extensions::ExtensionBuilder::ActionType::PAGE_ACTION)
.SetLocation(extensions::Manifest::INTERNAL) .SetLocation(extensions::Manifest::INTERNAL)
.AddPermission("https://www.google.com/*") .AddPermission("https://www.google.com/*")
.Build(); .Build();
service->GrantPermissions(page_action_ext.get()); extensions::ExtensionService* service =
service->AddExtension(page_action_ext.get()); extensions::ExtensionSystem::Get(profile())->extension_service();
extensions::ScriptingPermissionsModifier permissions_modifier_page_action(
profile(), page_action_ext); service->GrantPermissions(extension.get());
permissions_modifier_page_action.SetWithholdHostPermissions(true); service->AddExtension(extension.get());
extensions::ScriptingPermissionsModifier permissions_modifier(profile(),
ASSERT_EQ(2u, toolbar_actions_bar()->GetIconCount()); extension);
ExtensionActionViewController* page_action = permissions_modifier.SetWithholdHostPermissions(true);
AddTab(browser(), GURL("https://www.google.com/"));
ASSERT_EQ(1u, toolbar_actions_bar()->GetIconCount());
ExtensionActionViewController* action_controller =
static_cast<ExtensionActionViewController*>( static_cast<ExtensionActionViewController*>(
toolbar_actions_bar()->GetActions()[1]); toolbar_actions_bar()->GetActions()[0]);
EXPECT_EQ(browser_action_ext.get(), browser_action->extension()); EXPECT_EQ(extension.get(), action_controller->extension());
image_source = page_action->GetIconImageSourceForTesting(web_contents, size); content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
const gfx::Size size = toolbar_actions_bar()->GetViewSize();
std::unique_ptr<IconWithBadgeImageSource> image_source =
action_controller->GetIconImageSourceForTesting(web_contents, size);
EXPECT_TRUE(image_source->grayscale()); EXPECT_TRUE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_FALSE(image_source->paint_blocked_actions_decoration()); EXPECT_FALSE(image_source->paint_blocked_actions_decoration());
extensions::ExtensionActionRunner* action_runner =
extensions::ExtensionActionRunner::GetForWebContents(web_contents);
action_runner->RequestScriptInjectionForTesting( action_runner->RequestScriptInjectionForTesting(
page_action_ext.get(), extensions::UserScript::DOCUMENT_IDLE, extension.get(), extensions::UserScript::DOCUMENT_IDLE,
base::DoNothing()); base::DoNothing());
image_source = page_action->GetIconImageSourceForTesting(web_contents, size); image_source =
action_controller->GetIconImageSourceForTesting(web_contents, size);
EXPECT_FALSE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_TRUE(image_source->paint_blocked_actions_decoration()); EXPECT_TRUE(image_source->paint_blocked_actions_decoration());
}
// Tests the appearance of page actions with blocked actions in the overflow
// menu.
TEST_P(ToolbarActionsBarUnitTest, PageActionBlockedActionsInOverflow) {
scoped_refptr<const extensions::Extension> extension =
extensions::ExtensionBuilder("page action")
.SetAction(extensions::ExtensionBuilder::ActionType::PAGE_ACTION)
.SetLocation(extensions::Manifest::INTERNAL)
.AddPermission("https://www.google.com/*")
.Build();
extensions::ExtensionService* service =
extensions::ExtensionSystem::Get(profile())->extension_service();
service->GrantPermissions(extension.get());
service->AddExtension(extension.get());
extensions::ScriptingPermissionsModifier permissions_modifier(profile(),
extension);
permissions_modifier.SetWithholdHostPermissions(true);
AddTab(browser(), GURL("https://www.google.com/"));
// Overflow the page action and set the page action as wanting to run. We // Overflow the page action and set the page action as wanting to run. We
// shouldn't show the page action decoration because we are showing the // shouldn't show the page action decoration because we are showing the
// blocked action decoration (and should only show one at a time). // blocked action decoration (and should only show one at a time).
toolbar_model()->SetVisibleIconCount(0u); toolbar_model()->SetVisibleIconCount(0u);
EXPECT_EQ(0u, toolbar_actions_bar()->GetIconCount()); EXPECT_EQ(0u, toolbar_actions_bar()->GetIconCount());
EXPECT_EQ(2u, overflow_bar()->GetIconCount()); EXPECT_EQ(1u, overflow_bar()->GetIconCount());
ExtensionActionViewController* overflow_page_action = ExtensionActionViewController* action_controller =
static_cast<ExtensionActionViewController*>( static_cast<ExtensionActionViewController*>(
overflow_bar()->GetActions()[1]); overflow_bar()->GetActions()[0]);
SetActionWantsToRunOnTab(overflow_page_action->extension_action(),
web_contents, true); content::WebContents* web_contents =
image_source = browser()->tab_strip_model()->GetActiveWebContents();
overflow_page_action->GetIconImageSourceForTesting(web_contents, size); SetActionWantsToRunOnTab(action_controller->extension_action(), web_contents,
true);
const gfx::Size size = toolbar_actions_bar()->GetViewSize();
std::unique_ptr<IconWithBadgeImageSource> image_source =
action_controller->GetIconImageSourceForTesting(web_contents, size);
EXPECT_FALSE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_TRUE(image_source->paint_page_action_decoration());
EXPECT_TRUE(image_source->paint_blocked_actions_decoration()); EXPECT_FALSE(image_source->paint_blocked_actions_decoration());
SetActionWantsToRunOnTab(overflow_page_action->extension_action(), extensions::ExtensionActionRunner* action_runner =
web_contents, false); extensions::ExtensionActionRunner::GetForWebContents(web_contents);
toolbar_model()->SetVisibleIconCount(2u); action_runner->RequestScriptInjectionForTesting(
extension.get(), extensions::UserScript::DOCUMENT_IDLE,
base::DoNothing());
action_runner->RunForTesting(page_action_ext.get()); image_source =
image_source = page_action->GetIconImageSourceForTesting(web_contents, size); action_controller->GetIconImageSourceForTesting(web_contents, size);
EXPECT_FALSE(image_source->grayscale()); EXPECT_FALSE(image_source->grayscale());
EXPECT_FALSE(image_source->paint_page_action_decoration()); EXPECT_FALSE(image_source->paint_page_action_decoration());
EXPECT_FALSE(image_source->paint_blocked_actions_decoration()); EXPECT_TRUE(image_source->paint_blocked_actions_decoration());
} }
TEST_P(ToolbarActionsBarUnitTest, ExtensionActionContextMenu) { TEST_P(ToolbarActionsBarUnitTest, ExtensionActionContextMenu) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment