[go: nahoru, domu]

blob: 9e01568fafa975ef6bee7cf365421ba277f45dc3 [file] [log] [blame]
Avi Drissman4a8573c2022-09-09 19:35:541// Copyright 2014 The Chromium Authors
dgozman@chromium.orgd118ad72014-07-21 14:07:012// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
6#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_
7
Avi Drissman02e49e582023-01-07 01:23:188#include "base/functional/callback.h"
Ali Hijazie63cbaf62023-12-20 19:29:359#include "base/memory/raw_ptr.h"
dgozman@chromium.orgd118ad72014-07-21 14:07:0110#include "chrome/browser/devtools/devtools_window.h"
tfarina3b0452d2014-12-31 15:20:0911#include "ui/gfx/geometry/rect.h"
dgozman@chromium.orgd118ad72014-07-21 14:07:0112
13class Browser;
14class Profile;
15
16namespace content {
17class DevToolsAgentHost;
dgozmanab680412016-02-04 02:21:3718class MessageLoopRunner;
dgozman@chromium.orgd118ad72014-07-21 14:07:0119class WebContents;
20}
21
22class DevToolsWindowTesting {
23 public:
Peter Boström53c6c5952021-09-17 09:41:2624 DevToolsWindowTesting(const DevToolsWindowTesting&) = delete;
25 DevToolsWindowTesting& operator=(const DevToolsWindowTesting&) = delete;
26
dgozman@chromium.orgd118ad72014-07-21 14:07:0127 virtual ~DevToolsWindowTesting();
28
29 // The following methods block until DevToolsWindow is completely loaded.
30 static DevToolsWindow* OpenDevToolsWindowSync(
pfeldman@chromium.orgb3f957e62014-08-08 10:09:0231 content::WebContents* inspected_web_contents,
Simon Zünd5fed603a2021-10-19 06:21:1432 Profile* profile,
33 bool is_docked);
34 static DevToolsWindow* OpenDevToolsWindowSync(
35 content::WebContents* inspected_web_contents,
pfeldman@chromium.orgb3f957e62014-08-08 10:09:0236 bool is_docked);
dgozman@chromium.orgd118ad72014-07-21 14:07:0137 static DevToolsWindow* OpenDevToolsWindowSync(
38 Browser* browser, bool is_docked);
Dmitry Gozmandc7f3672017-11-20 15:52:4639 static DevToolsWindow* OpenDevToolsWindowSync(
40 Profile* profile,
41 scoped_refptr<content::DevToolsAgentHost> agent_host);
Dmitry Gozman2731b562018-09-10 23:19:0242 static DevToolsWindow* OpenDiscoveryDevToolsWindowSync(Profile* profile);
dgozman@chromium.orgd118ad72014-07-21 14:07:0143
44 // Closes the window like it was user-initiated.
45 static void CloseDevToolsWindow(DevToolsWindow* window);
46 // Blocks until window is closed.
47 static void CloseDevToolsWindowSync(DevToolsWindow* window);
48
49 static DevToolsWindowTesting* Get(DevToolsWindow* window);
50
51 Browser* browser();
52 content::WebContents* main_web_contents();
53 content::WebContents* toolbox_web_contents();
54 void SetInspectedPageBounds(const gfx::Rect& bounds);
danakj710b4c02019-11-28 16:08:4555 void SetCloseCallback(base::OnceClosure closure);
Dmitry Gozman57b92ce2017-12-28 22:24:5456 void SetOpenNewWindowForPopups(bool value);
dgozman@chromium.orgd118ad72014-07-21 14:07:0157
58 private:
59 friend class DevToolsWindow;
dgozmanab680412016-02-04 02:21:3760 friend class DevToolsWindowCreationObserver;
dgozman@chromium.orgd118ad72014-07-21 14:07:0161
62 explicit DevToolsWindowTesting(DevToolsWindow* window);
63 static void WaitForDevToolsWindowLoad(DevToolsWindow* window);
64 static void WindowClosed(DevToolsWindow* window);
65 static DevToolsWindowTesting* Find(DevToolsWindow* window);
66
67 DevToolsWindow* devtools_window_;
danakj710b4c02019-11-28 16:08:4568 base::OnceClosure close_callback_;
dgozman@chromium.orgd118ad72014-07-21 14:07:0169};
70
dgozmanab680412016-02-04 02:21:3771class DevToolsWindowCreationObserver {
72 public:
73 DevToolsWindowCreationObserver();
Peter Boström53c6c5952021-09-17 09:41:2674
75 DevToolsWindowCreationObserver(const DevToolsWindowCreationObserver&) =
76 delete;
77 DevToolsWindowCreationObserver& operator=(
78 const DevToolsWindowCreationObserver&) = delete;
79
dgozmanab680412016-02-04 02:21:3780 ~DevToolsWindowCreationObserver();
81
Ali Hijazie63cbaf62023-12-20 19:29:3582 using DevToolsWindows =
83 std::vector<raw_ptr<DevToolsWindow, VectorExperimental>>;
dgozman010f9e0e2016-02-24 21:25:5384 const DevToolsWindows& devtools_windows() { return devtools_windows_; }
85 DevToolsWindow* devtools_window();
86
dgozmanab680412016-02-04 02:21:3787 void Wait();
88 void WaitForLoad();
dgozman010f9e0e2016-02-24 21:25:5389 void CloseAllSync();
dgozmanab680412016-02-04 02:21:3790
91 private:
92 friend class DevToolsWindow;
93
94 void DevToolsWindowCreated(DevToolsWindow* devtools_window);
95
Leonard Greye91d21c2021-01-14 16:37:3296 base::RepeatingCallback<void(DevToolsWindow*)> creation_callback_;
dgozman010f9e0e2016-02-24 21:25:5397 DevToolsWindows devtools_windows_;
dgozmanab680412016-02-04 02:21:3798 scoped_refptr<content::MessageLoopRunner> runner_;
dgozmanab680412016-02-04 02:21:3799};
100
dgozman@chromium.orgd118ad72014-07-21 14:07:01101#endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_TESTING_H_