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 139 140
|
// 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 BrowserContext;
class DevToolsProtocolHandler;
class RenderViewHost;
class RenderViewHostImpl;
#if defined(OS_ANDROID)
class PowerSaveBlockerImpl;
#endif
namespace devtools {
namespace dom { class DOMHandler; }
namespace input { class InputHandler; }
namespace inspector { class InspectorHandler; }
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;
BrowserContext* GetBrowserContext() 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 AboutToNavigateRenderFrame(RenderFrameHost* render_frame_host) 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);
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::inspector::InspectorHandler> inspector_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<DevToolsProtocolHandler> protocol_handler_;
#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_
|