Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / toolbar / extension_toolbar_menu_view.cc
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.
4
5 #include "chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h"
6
7 #include "chrome/browser/ui/views/frame/browser_view.h"
8 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
9 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
10 #include "chrome/browser/ui/views/toolbar/wrench_menu.h"
11 #include "ui/views/controls/menu/menu_item_view.h"
12
13 ExtensionToolbarMenuView::ExtensionToolbarMenuView(Browser* browser,
14                                                    WrenchMenu* wrench_menu)
15     : browser_(browser),
16       wrench_menu_(wrench_menu),
17       container_(NULL),
18       browser_actions_container_observer_(this) {
19   BrowserActionsContainer* main =
20       BrowserView::GetBrowserViewForBrowser(browser_)
21           ->toolbar()->browser_actions();
22   container_ = new BrowserActionsContainer(
23       browser_,
24       NULL,  // No owner view, means no extra keybindings are registered.
25       main);
26   container_->Init();
27   AddChildView(container_);
28
29   // If we were opened for a drop command, we have to wait for the drop to
30   // finish so we can close the wrench menu.
31   if (wrench_menu_->for_drop()) {
32     browser_actions_container_observer_.Add(container_);
33     browser_actions_container_observer_.Add(main);
34   }
35 }
36
37 ExtensionToolbarMenuView::~ExtensionToolbarMenuView() {
38 }
39
40 gfx::Size ExtensionToolbarMenuView::GetPreferredSize() const {
41   return container_->GetPreferredSize();
42 }
43
44 void ExtensionToolbarMenuView::Layout() {
45   // All buttons are given the same width.
46   gfx::Size sz = GetPreferredSize();
47   SetBounds(views::MenuItemView::label_start(), 0, sz.width(), sz.height());
48   container_->SetBounds(0, 0, sz.width(), sz.height());
49 }
50
51 void ExtensionToolbarMenuView::OnBrowserActionDragDone() {
52   DCHECK(wrench_menu_->for_drop());
53   wrench_menu_->CloseMenu();
54 }