1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/extensions/extension_message_bubble_browsertest.h"
7 #include "base/run_loop.h"
8 #include "chrome/browser/extensions/extension_action_test_util.h"
9 #include "chrome/browser/extensions/extension_service.h"
10 #include "chrome/browser/ui/extensions/extension_message_bubble_factory.h"
11 #include "extensions/common/feature_switch.h"
13 ExtensionMessageBubbleBrowserTest::ExtensionMessageBubbleBrowserTest() {
16 ExtensionMessageBubbleBrowserTest::~ExtensionMessageBubbleBrowserTest() {
19 void ExtensionMessageBubbleBrowserTest::SetUpCommandLine(
20 base::CommandLine
* command_line
) {
21 BrowserActionsBarBrowserTest::SetUpCommandLine(command_line
);
22 // The dev mode warning bubble is an easy one to trigger, so we use that for
23 // our testing purposes.
24 dev_mode_bubble_override_
.reset(
25 new extensions::FeatureSwitch::ScopedOverride(
26 extensions::FeatureSwitch::force_dev_mode_highlighting(),
28 ExtensionMessageBubbleFactory::set_override_for_tests(
29 ExtensionMessageBubbleFactory::OVERRIDE_ENABLED
);
32 void ExtensionMessageBubbleBrowserTest::TestBubbleAnchoredToExtensionAction() {
33 scoped_refptr
<const extensions::Extension
> action_extension
=
34 extensions::extension_action_test_util::CreateActionExtension(
36 extensions::extension_action_test_util::BROWSER_ACTION
,
37 extensions::Manifest::UNPACKED
);
38 extension_service()->AddExtension(action_extension
.get());
40 Browser
* second_browser
= new Browser(
41 Browser::CreateParams(profile(), browser()->host_desktop_type()));
42 base::RunLoop().RunUntilIdle();
44 CheckBubble(second_browser
, ANCHOR_BROWSER_ACTION
);
45 CloseBubble(second_browser
);
48 void ExtensionMessageBubbleBrowserTest::TestBubbleAnchoredToWrenchMenu() {
49 scoped_refptr
<const extensions::Extension
> no_action_extension
=
50 extensions::extension_action_test_util::CreateActionExtension(
51 "no_action_extension",
52 extensions::extension_action_test_util::NO_ACTION
,
53 extensions::Manifest::UNPACKED
);
54 extension_service()->AddExtension(no_action_extension
.get());
56 Browser
* second_browser
= new Browser(
57 Browser::CreateParams(profile(), browser()->host_desktop_type()));
58 base::RunLoop().RunUntilIdle();
60 CheckBubble(second_browser
, ANCHOR_WRENCH_MENU
);
61 CloseBubble(second_browser
);
64 void ExtensionMessageBubbleBrowserTest::
65 TestBubbleAnchoredToWrenchMenuWithOtherAction() {
66 scoped_refptr
<const extensions::Extension
> no_action_extension
=
67 extensions::extension_action_test_util::CreateActionExtension(
68 "no_action_extension",
69 extensions::extension_action_test_util::NO_ACTION
,
70 extensions::Manifest::UNPACKED
);
71 extension_service()->AddExtension(no_action_extension
.get());
73 scoped_refptr
<const extensions::Extension
> action_extension
=
74 extensions::extension_action_test_util::CreateActionExtension(
76 extensions::extension_action_test_util::BROWSER_ACTION
,
77 extensions::Manifest::INTERNAL
);
78 extension_service()->AddExtension(action_extension
.get());
80 Browser
* second_browser
= new Browser(
81 Browser::CreateParams(profile(), browser()->host_desktop_type()));
82 base::RunLoop().RunUntilIdle();
84 CheckBubble(second_browser
, ANCHOR_WRENCH_MENU
);
85 CloseBubble(second_browser
);
88 void ExtensionMessageBubbleBrowserTest::PreBubbleShowsOnStartup() {
89 LoadExtension(test_data_dir_
.AppendASCII("good_unpacked"));
92 void ExtensionMessageBubbleBrowserTest::TestBubbleShowsOnStartup() {
93 base::RunLoop().RunUntilIdle();
94 CheckBubble(browser(), ANCHOR_BROWSER_ACTION
);
95 CloseBubble(browser());