browser_action_test_util_views.cc revision 116680a4aac90f2aa7413d9095a592090648e557
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"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/ui/browser_window_testing_views.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/extensions/extension_popup.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/browser_action_view.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserActionsContainer* GetContainer(Browser* browser) {
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return browser->window()->GetBrowserWindowTesting()->GetToolbarView()->
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      browser_actions();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserActionTestUtil::NumberOfBrowserActions() {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->num_browser_actions();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserActionTestUtil::VisibleBrowserActions() {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->VisibleBrowserActions();
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionAction* BrowserActionTestUtil::GetExtensionAction(int index) {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return extensions::ExtensionActionManager::Get(browser_->profile())->
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetBrowserAction(*GetContainer(browser_)->GetBrowserActionViewAt(index)->
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       button()->extension());
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void BrowserActionTestUtil::InspectPopup(int index) {
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetContainer(browser_)->InspectPopup(GetExtensionAction(index));
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HasIcon(int index) {
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  return !GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      GetImage(views::Button::STATE_NORMAL).isNull();
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Image BrowserActionTestUtil::GetIcon(int index) {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::ImageSkia icon = GetContainer(browser_)->GetBrowserActionViewAt(index)->
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      button()->GetIconForTest();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Image(icon);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserActionTestUtil::Press(int index) {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->TestExecuteBrowserAction(index);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string BrowserActionTestUtil::GetExtensionId(int index) {
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserActionButton* button =
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetContainer(browser_)->GetBrowserActionViewAt(index)->button();
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return button->extension()->id();
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string BrowserActionTestUtil::GetTooltip(int index) {
69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 text;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetTooltipText(gfx::Point(), &text);
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return base::UTF16ToUTF8(text);
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::NativeView BrowserActionTestUtil::GetPopupNativeView() {
76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup()->GetWidget()->GetNativeView();
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HasPopup() {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup() != NULL;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect BrowserActionTestUtil::GetPopupBounds() {
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup()->bounds();
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HidePopup() {
88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetContainer(browser_)->HidePopup();
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return !HasPopup();
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserActionTestUtil::SetIconVisibilityCount(size_t icons) {
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->TestSetIconVisibilityCount(icons);
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Size BrowserActionTestUtil::GetMinPopupSize() {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Size(ExtensionPopup::kMinWidth, ExtensionPopup::kMinHeight);
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Size BrowserActionTestUtil::GetMaxPopupSize() {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Size(ExtensionPopup::kMaxWidth, ExtensionPopup::kMaxHeight);
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
103