blob: 204d87e85444058a83ad63271cc985090a38ab45 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_DEVTOOLS_RENDER_VIEW_DEVTOOLS_AGENT_HOST_H_
#define CONTENT_BROWSER_DEVTOOLS_RENDER_VIEW_DEVTOOLS_AGENT_HOST_H_
#include <map>
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "content/browser/devtools/ipc_devtools_agent_host.h"
#include "content/common/content_export.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/web_contents_observer.h"
namespace cc {
class CompositorFrameMetadata;
}
namespace content {
class DevToolsProtocolHandlerImpl;
class RenderViewHost;
class RenderViewHostImpl;
#if defined(OS_ANDROID)
class PowerSaveBlockerImpl;
#endif
namespace devtools {
namespace dom { class DOMHandler; }
namespace input { class InputHandler; }
namespace network { class NetworkHandler; }
namespace page { class PageHandler; }
namespace power { class PowerHandler; }
namespace tracing { class TracingHandler; }
}
class CONTENT_EXPORT RenderViewDevToolsAgentHost
: public IPCDevToolsAgentHost,
private WebContentsObserver,
public NotificationObserver {
public:
static void OnCancelPendingNavigation(RenderViewHost* pending,
RenderViewHost* current);
RenderViewDevToolsAgentHost(RenderViewHost*);
void SynchronousSwapCompositorFrame(
const cc::CompositorFrameMetadata& frame_metadata);
// DevTooolsAgentHost overrides.
void DisconnectWebContents() override;
void ConnectWebContents(WebContents* web_contents) override;
WebContents* GetWebContents() override;
Type GetType() override;
std::string GetTitle() override;
GURL GetURL() override;
bool Activate() override;
bool Close() override;
private:
friend class DevToolsAgentHost;
~RenderViewDevToolsAgentHost() override;
// IPCDevToolsAgentHost overrides.
void DispatchProtocolMessage(const std::string& message) override;
void SendMessageToAgent(IPC::Message* msg) override;
void OnClientAttached() override;
void OnClientDetached() override;
// WebContentsObserver overrides.
void AboutToNavigateRenderView(RenderViewHost* dest_rvh) override;
void RenderViewHostChanged(RenderViewHost* old_host,
RenderViewHost* new_host) override;
void RenderViewDeleted(RenderViewHost* rvh) override;
void RenderProcessGone(base::TerminationStatus status) override;
bool OnMessageReceived(const IPC::Message& message,
RenderFrameHost* render_frame_host) override;
bool OnMessageReceived(const IPC::Message& message) override;
void DidAttachInterstitialPage() override;
void DidDetachInterstitialPage() override;
void TitleWasSet(NavigationEntry* entry, bool explicit_set) override;
void NavigationEntryCommitted(
const LoadCommittedDetails& load_details) override;
// NotificationObserver overrides:
void Observe(int type,
const NotificationSource& source,
const NotificationDetails& details) override;
void DisconnectRenderViewHost();
void ConnectRenderViewHost(RenderViewHost* rvh);
void ReattachToRenderViewHost(RenderViewHost* rvh);
bool DispatchIPCMessage(const IPC::Message& message);
void SetRenderViewHost(RenderViewHost* rvh);
void ClearRenderViewHost();
void RenderViewCrashed();
void OnSwapCompositorFrame(const IPC::Message& message);
bool OnSetTouchEventEmulationEnabled(const IPC::Message& message);
void OnDispatchOnInspectorFrontend(const std::string& message,
uint32 total_size);
void DispatchOnInspectorFrontend(const std::string& message);
void OnSaveAgentRuntimeState(const std::string& state);
void ClientDetachedFromRenderer();
void InnerOnClientAttached();
void InnerClientDetachedFromRenderer();
RenderViewHostImpl* render_view_host_;
scoped_ptr<devtools::dom::DOMHandler> dom_handler_;
scoped_ptr<devtools::input::InputHandler> input_handler_;
scoped_ptr<devtools::network::NetworkHandler> network_handler_;
scoped_ptr<devtools::page::PageHandler> page_handler_;
scoped_ptr<devtools::power::PowerHandler> power_handler_;
scoped_ptr<devtools::tracing::TracingHandler> tracing_handler_;
scoped_ptr<DevToolsProtocolHandlerImpl> handler_impl_;
#if defined(OS_ANDROID)
scoped_ptr<PowerSaveBlockerImpl> power_save_blocker_;
#endif
std::string state_;
NotificationRegistrar registrar_;
bool reattaching_;
DISALLOW_COPY_AND_ASSIGN(RenderViewDevToolsAgentHost);
};
} // namespace content
#endif // CONTENT_BROWSER_DEVTOOLS_RENDER_VIEW_DEVTOOLS_AGENT_HOST_H_
|