ozone: evdev: Sync caps lock LED state to evdev
[chromium-blink-merge.git] / chrome / browser / ui / toolbar / component_toolbar_actions_browsertest.cc
blob307a74dc612521899696e644ff88076593da5f21
1 // Copyright 2014 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 "base/macros.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "chrome/browser/extensions/browser_action_test_util.h"
8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h"
10 #include "chrome/browser/ui/toolbar/test_toolbar_action_view_controller.h"
11 #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
12 #include "chrome/test/base/in_process_browser_test.h"
13 #include "extensions/common/feature_switch.h"
15 namespace {
17 const char kMockId[] = "mock_action";
19 class MockComponentToolbarActionsFactory
20 : public ComponentToolbarActionsFactory {
21 public:
22 MockComponentToolbarActionsFactory();
23 virtual ~MockComponentToolbarActionsFactory();
25 // ComponentToolbarActionsFactory:
26 ScopedVector<ToolbarActionViewController> GetComponentToolbarActions()
27 override;
29 const std::vector<TestToolbarActionViewController*>& weak_actions() const {
30 return weak_actions_;
33 private:
34 // A (weak) set of all created actions.
35 std::vector<TestToolbarActionViewController*> weak_actions_;
37 DISALLOW_COPY_AND_ASSIGN(MockComponentToolbarActionsFactory);
40 MockComponentToolbarActionsFactory::MockComponentToolbarActionsFactory() {
41 ComponentToolbarActionsFactory::SetTestingFactory(this);
44 MockComponentToolbarActionsFactory::~MockComponentToolbarActionsFactory() {
45 ComponentToolbarActionsFactory::SetTestingFactory(nullptr);
48 ScopedVector<ToolbarActionViewController>
49 MockComponentToolbarActionsFactory::GetComponentToolbarActions() {
50 ScopedVector<ToolbarActionViewController> component_actions;
51 TestToolbarActionViewController* action =
52 new TestToolbarActionViewController(kMockId);
53 component_actions.push_back(action);
54 weak_actions_.push_back(action);
55 return component_actions.Pass();
58 } // namespace
60 class ComponentToolbarActionsBrowserTest : public InProcessBrowserTest {
61 protected:
62 ComponentToolbarActionsBrowserTest() {}
63 ~ComponentToolbarActionsBrowserTest() override {}
65 void SetUpCommandLine(base::CommandLine* command_line) override {
66 InProcessBrowserTest::SetUpCommandLine(command_line);
67 enable_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride(
68 extensions::FeatureSwitch::extension_action_redesign(), true));
69 mock_actions_factory_.reset(new MockComponentToolbarActionsFactory());
72 MockComponentToolbarActionsFactory* mock_factory() {
73 return mock_actions_factory_.get();
76 private:
77 scoped_ptr<extensions::FeatureSwitch::ScopedOverride> enable_redesign_;
78 scoped_ptr<MockComponentToolbarActionsFactory> mock_actions_factory_;
80 DISALLOW_COPY_AND_ASSIGN(ComponentToolbarActionsBrowserTest);
83 // Test that Component Toolbar Actions appear in the browser actions container
84 // and can receive click events properly.
85 IN_PROC_BROWSER_TEST_F(ComponentToolbarActionsBrowserTest,
86 ComponentToolbarActionsShowUpAndRespondToClicks) {
87 BrowserActionTestUtil browser_actions_bar(browser());
89 // There should be only one component action view.
90 ASSERT_EQ(1, browser_actions_bar.NumberOfBrowserActions());
92 // Even though the method says "ExtensionId", this actually refers to any id
93 // for the action.
94 EXPECT_EQ(kMockId, browser_actions_bar.GetExtensionId(0));
96 // There should only have been one created component action.
97 const std::vector<TestToolbarActionViewController*>& weak_actions =
98 mock_factory()->weak_actions();
99 ASSERT_EQ(1u, weak_actions.size());
100 TestToolbarActionViewController* mock_component_action = weak_actions[0];
101 ASSERT_TRUE(mock_component_action);
103 // Test that clicking on the component action works.
104 EXPECT_EQ(0, mock_component_action->execute_action_count());
105 browser_actions_bar.Press(0);
106 EXPECT_EQ(1, mock_component_action->execute_action_count());