browser_action_test_util_views.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/browser_action_test_util.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_action_manager.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/extensions/extension_popup.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/browser_action_view.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserActionsContainer* GetContainer(Browser* browser) {
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return browser->window()->GetBrowserWindowTesting()->GetToolbarView()->
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      browser_actions();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserActionTestUtil::NumberOfBrowserActions() {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->num_browser_actions();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserActionTestUtil::VisibleBrowserActions() {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->VisibleBrowserActions();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionAction* BrowserActionTestUtil::GetExtensionAction(int index) {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return extensions::ExtensionActionManager::Get(browser_->profile())->
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetBrowserAction(*GetContainer(browser_)->GetBrowserActionViewAt(index)->
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       button()->extension());
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void BrowserActionTestUtil::InspectPopup(int index) {
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetContainer(browser_)->InspectPopup(GetExtensionAction(index));
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HasIcon(int index) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      HasIcon();
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Image BrowserActionTestUtil::GetIcon(int index) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::ImageSkia icon = GetContainer(browser_)->GetBrowserActionViewAt(index)->
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      button()->GetIconForTest();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Image(icon);
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserActionTestUtil::Press(int index) {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->TestExecuteBrowserAction(index);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string BrowserActionTestUtil::GetExtensionId(int index) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserActionButton* button =
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetContainer(browser_)->GetBrowserActionViewAt(index)->button();
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return button->extension()->id();
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string BrowserActionTestUtil::GetTooltip(int index) {
68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 text;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetTooltipText(gfx::Point(), &text);
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return base::UTF16ToUTF8(text);
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::NativeView BrowserActionTestUtil::GetPopupNativeView() {
75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup()->GetWidget()->GetNativeView();
76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HasPopup() {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup() != NULL;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect BrowserActionTestUtil::GetPopupBounds() {
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup()->bounds();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HidePopup() {
87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetContainer(browser_)->HidePopup();
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return !HasPopup();
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserActionTestUtil::SetIconVisibilityCount(size_t icons) {
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->TestSetIconVisibilityCount(icons);
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Size BrowserActionTestUtil::GetMinPopupSize() {
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Size(ExtensionPopup::kMinWidth, ExtensionPopup::kMinHeight);
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Size BrowserActionTestUtil::GetMaxPopupSize() {
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Size(ExtensionPopup::kMaxWidth, ExtensionPopup::kMaxHeight);
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
102