1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/callback.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/devtools/devtools_window.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/gfx/rect.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Browser;
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Profile;
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace content {
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass DevToolsAgentHost;
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass WebContents;
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass DevToolsWindowTesting {
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~DevToolsWindowTesting();
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // The following methods block until DevToolsWindow is completely loaded.
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static DevToolsWindow* OpenDevToolsWindowSync(
266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      content::WebContents* inspected_web_contents,
276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      bool is_docked);
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static DevToolsWindow* OpenDevToolsWindowSync(
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      Browser* browser, bool is_docked);
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static DevToolsWindow* OpenDevToolsWindowForWorkerSync(
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      Profile* profile, content::DevToolsAgentHost* worker_agent);
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Closes the window like it was user-initiated.
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static void CloseDevToolsWindow(DevToolsWindow* window);
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Blocks until window is closed.
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static void CloseDevToolsWindowSync(DevToolsWindow* window);
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static DevToolsWindowTesting* Get(DevToolsWindow* window);
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  Browser* browser();
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  content::WebContents* main_web_contents();
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  content::WebContents* toolbox_web_contents();
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void SetInspectedPageBounds(const gfx::Rect& bounds);
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void SetCloseCallback(const base::Closure& closure);
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  friend class DevToolsWindow;
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  explicit DevToolsWindowTesting(DevToolsWindow* window);
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static void WaitForDevToolsWindowLoad(DevToolsWindow* window);
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static void WindowClosed(DevToolsWindow* window);
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  static DevToolsWindowTesting* Find(DevToolsWindow* window);
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DevToolsWindow* devtools_window_;
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  base::Closure close_callback_;
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(DevToolsWindowTesting);
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
61