1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_EXTENSIONS_BROWSER_ACTION_TEST_UTIL_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_EXTENSIONS_BROWSER_ACTION_TEST_UTIL_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "build/build_config.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Browser;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace gfx {
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Rect;
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Size;
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace gfx
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass BrowserActionTestUtil {
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit BrowserActionTestUtil(Browser* browser) : browser_(browser) {}
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the number of browser action buttons in the window toolbar.
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int NumberOfBrowserActions();
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the number of browser action currently visible.
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int VisibleBrowserActions();
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(TOOLKIT_VIEWS)
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Waits for a browser action at |index| to get updated.
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void WaitForBrowserActionUpdated(int index);
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns whether the browser action at |index| has a non-null icon. Note
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // that the icon is loaded asynchronously, in which case you can wait for it
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // to load by calling WaitForBrowserActionUpdated.
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool HasIcon(int index);
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Simulates a user click on the browser action button at |index|.
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void Press(int index);
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the extension id of the extension at |index|.
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string GetExtensionId(int index);
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the current tooltip for the browser action button.
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string GetTooltip(int index);
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns whether a browser action popup is being shown currently.
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool HasPopup();
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the bounds of the current browser action popup.
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  gfx::Rect GetPopupBounds();
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Hides the given popup and returns whether the hide was successful.
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool HidePopup();
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Set how many icons should be visible.
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void SetIconVisibilityCount(size_t icons);
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the minimum allowed size of an extension popup.
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static gfx::Size GetMinPopupSize();
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the maximum allowed size of an extension popup.
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static gfx::Size GetMaxPopupSize();
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  Browser* browser_;  // weak
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_EXTENSIONS_BROWSER_ACTION_TEST_UTIL_H_
72