browser_action_test_util_views.cc revision f2477e01787aa58f445919b809d89e252beef54f
116c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek// Copyright 2013 The Chromium Authors. All rights reserved.
216c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek// Use of this source code is governed by a BSD-style license that can be
316c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek// found in the LICENSE file.
416c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek
516c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "chrome/browser/extensions/browser_action_test_util.h"
616c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek
716c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "base/strings/utf_string_conversions.h"
816c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "chrome/browser/extensions/extension_action_manager.h"
916c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "chrome/browser/ui/browser.h"
102e331b938b38057e333fab0ba841130ea8467794Douglas Gregor#include "chrome/browser/ui/browser_window.h"
112e331b938b38057e333fab0ba841130ea8467794Douglas Gregor#include "chrome/browser/ui/views/extensions/extension_popup.h"
122e331b938b38057e333fab0ba841130ea8467794Douglas Gregor#include "chrome/browser/ui/views/toolbar/browser_action_view.h"
1316c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
1416c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
1516c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "ui/gfx/image/image.h"
160a90d32523bfe5fa63e11b648686c9699f786d15Ted Kremenek#include "ui/gfx/rect.h"
1716c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek#include "ui/gfx/size.h"
18ed122735639d83c10f18c28c7fd117bfcd0f62cbTed Kremenek
197eaa8ae8692c5cd3eed8cb334fe5346470522091Douglas Gregornamespace {
2016c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek
216931900f43cea558c6974075256c07728dbfecc6Douglas GregorBrowserActionsContainer* GetContainer(Browser* browser) {
22283cae37b03047c14ef918503bc46b08405c3b69Douglas Gregor  BrowserActionsContainer* container =
23283cae37b03047c14ef918503bc46b08405c3b69Douglas Gregor      browser->window()->GetBrowserWindowTesting()->GetToolbarView()->
241f60d9ea523fc321d811fe880ba9a1ec74fa8f9bDouglas Gregor          browser_actions();
25007a7c9d8dcdb2e9cd94b6075108bfc4c90e6ccdTed Kremenek  return container;
26edc8aa68ef91aeea686c5aadf64ef902c38318ddTed Kremenek}
2716c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek
2816c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek}  // namespace
291f60d9ea523fc321d811fe880ba9a1ec74fa8f9bDouglas Gregor
3016c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenekint BrowserActionTestUtil::NumberOfBrowserActions() {
315bfb8c128c2ac8eb4032afc180cdc400a0f953caDouglas Gregor  return GetContainer(browser_)->num_browser_actions();
325bfb8c128c2ac8eb4032afc180cdc400a0f953caDouglas Gregor}
335bfb8c128c2ac8eb4032afc180cdc400a0f953caDouglas Gregor
345bfb8c128c2ac8eb4032afc180cdc400a0f953caDouglas Gregorint BrowserActionTestUtil::VisibleBrowserActions() {
3516c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek  return GetContainer(browser_)->VisibleBrowserActions();
3616c440a377b7ec8b722a2e2c7c864f75c95bd305Ted Kremenek}
37e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek
38e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted KremenekExtensionAction* BrowserActionTestUtil::GetExtensionAction(int index) {
39e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek  return extensions::ExtensionActionManager::Get(browser_->profile())->
40e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek      GetBrowserAction(*GetContainer(browser_)->GetBrowserActionViewAt(index)->
41387475d0c18aaeb022108de9d33b6c9fb7998843Sean Hunt                       button()->extension());
42387475d0c18aaeb022108de9d33b6c9fb7998843Sean Hunt}
43387475d0c18aaeb022108de9d33b6c9fb7998843Sean Hunt
44e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenekbool BrowserActionTestUtil::HasIcon(int index) {
45e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek  return GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
46e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek      HasIcon();
47e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek}
48e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek
49a60ed47da13393796d8552b9fdca12abbb3eea42Ted Kremenekgfx::Image BrowserActionTestUtil::GetIcon(int index) {
50a60ed47da13393796d8552b9fdca12abbb3eea42Ted Kremenek  gfx::ImageSkia icon = GetContainer(browser_)->GetBrowserActionViewAt(index)->
51e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek      button()->GetIconForTest();
52e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek  return gfx::Image(icon);
53e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek}
54e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenek
55e77f443dbca8cdc23e5aa94a2653367e4a7cbe47Ted Kremenekvoid BrowserActionTestUtil::Press(int index) {
56a60ed47da13393796d8552b9fdca12abbb3eea42Ted Kremenek  GetContainer(browser_)->TestExecuteBrowserAction(index);
57007a7c9d8dcdb2e9cd94b6075108bfc4c90e6ccdTed Kremenek}
5854d67caeee4fdce81f07163832f1163d5f2af5d2Daniel Dunbar
59007a7c9d8dcdb2e9cd94b6075108bfc4c90e6ccdTed Kremenekstd::string BrowserActionTestUtil::GetExtensionId(int index) {
60dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin  BrowserActionButton* button =
61007a7c9d8dcdb2e9cd94b6075108bfc4c90e6ccdTed Kremenek      GetContainer(browser_)->GetBrowserActionViewAt(index)->button();
625bfb8c128c2ac8eb4032afc180cdc400a0f953caDouglas Gregor  return button->extension()->id();
63edc8aa68ef91aeea686c5aadf64ef902c38318ddTed Kremenek}
64edc8aa68ef91aeea686c5aadf64ef902c38318ddTed Kremenek
65a60ed47da13393796d8552b9fdca12abbb3eea42Ted Kremenekstd::string BrowserActionTestUtil::GetTooltip(int index) {
66a60ed47da13393796d8552b9fdca12abbb3eea42Ted Kremenek  string16 text;
6754d67caeee4fdce81f07163832f1163d5f2af5d2Daniel Dunbar  GetContainer(browser_)->GetBrowserActionViewAt(index)->button()->
6897b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor    GetTooltipText(gfx::Point(), &text);
6997b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  return UTF16ToUTF8(text);
7097b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor}
7197b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor
7297b9872d5775446cb8aca1380e437649fe848d91Douglas Gregorbool BrowserActionTestUtil::HasPopup() {
7397b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  return GetContainer(browser_)->TestGetPopup() != NULL;
7497b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor}
7597b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor
7697b9872d5775446cb8aca1380e437649fe848d91Douglas Gregorgfx::Rect BrowserActionTestUtil::GetPopupBounds() {
7797b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  return GetContainer(browser_)->TestGetPopup()->bounds();
7897b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor}
7997b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor
8097b9872d5775446cb8aca1380e437649fe848d91Douglas Gregorbool BrowserActionTestUtil::HidePopup() {
8197b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  BrowserActionsContainer* container = GetContainer(browser_);
8297b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  container->HidePopup();
8397b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  return !HasPopup();
8497b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor}
8597b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor
8697b9872d5775446cb8aca1380e437649fe848d91Douglas Gregorvoid BrowserActionTestUtil::SetIconVisibilityCount(size_t icons) {
8797b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  GetContainer(browser_)->TestSetIconVisibilityCount(icons);
8897b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor}
8997b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor
9097b9872d5775446cb8aca1380e437649fe848d91Douglas Gregorgfx::Size BrowserActionTestUtil::GetMinPopupSize() {
9197b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  return gfx::Size(ExtensionPopup::kMinWidth, ExtensionPopup::kMinHeight);
9297b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor}
9397b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor
9497b9872d5775446cb8aca1380e437649fe848d91Douglas Gregorgfx::Size BrowserActionTestUtil::GetMaxPopupSize() {
9597b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor  return gfx::Size(ExtensionPopup::kMaxWidth, ExtensionPopup::kMaxHeight);
9697b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor}
9797b9872d5775446cb8aca1380e437649fe848d91Douglas Gregor