browser_action_test_util_views.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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) {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserActionsContainer* container =
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      browser->window()->GetBrowserWindowTesting()->GetToolbarView()->
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          browser_actions();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return container;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserActionTestUtil::NumberOfBrowserActions() {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->num_browser_actions();
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserActionTestUtil::VisibleBrowserActions() {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->VisibleBrowserActions();
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionAction* BrowserActionTestUtil::GetExtensionAction(int index) {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return extensions::ExtensionActionManager::Get(browser_->profile())->
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetBrowserAction(*GetContainer(browser_)->GetBrowserActionViewAt(index)->
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       button()->extension());
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HasIcon(int index) {
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      HasIcon();
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Image BrowserActionTestUtil::GetIcon(int index) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::ImageSkia icon = GetContainer(browser_)->GetBrowserActionViewAt(index)->
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      button()->GetIconForTest();
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Image(icon);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserActionTestUtil::Press(int index) {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->TestExecuteBrowserAction(index);
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string BrowserActionTestUtil::GetExtensionId(int index) {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserActionButton* button =
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetContainer(browser_)->GetBrowserActionViewAt(index)->button();
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return button->extension()->id();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string BrowserActionTestUtil::GetTooltip(int index) {
66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 text;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetTooltipText(gfx::Point(), &text);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return UTF16ToUTF8(text);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HasPopup() {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup() != NULL;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect BrowserActionTestUtil::GetPopupBounds() {
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetContainer(browser_)->TestGetPopup()->bounds();
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserActionTestUtil::HidePopup() {
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserActionsContainer* container = GetContainer(browser_);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  container->HidePopup();
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return !HasPopup();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserActionTestUtil::SetIconVisibilityCount(size_t icons) {
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetContainer(browser_)->TestSetIconVisibilityCount(icons);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Size BrowserActionTestUtil::GetMinPopupSize() {
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Size(ExtensionPopup::kMinWidth, ExtensionPopup::kMinHeight);
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Size BrowserActionTestUtil::GetMaxPopupSize() {
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return gfx::Size(ExtensionPopup::kMaxWidth, ExtensionPopup::kMaxHeight);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
97