#ifndef EXTENSIONS_SHELL_RENDERER_SHELL_CONTENT_RENDERER_CLIENT_H_
#define EXTENSIONS_SHELL_RENDERER_SHELL_CONTENT_RENDERER_CLIENT_H_
#include <memory>
#include "base/compiler_specific.h"
#include "content/public/renderer/content_renderer_client.h"
namespace blink {
class WebURL;
}
namespace extensions {
class ExtensionsClient;
class ShellExtensionsRendererClient;
class ShellContentRendererClient : public content::ContentRendererClient {
public:
ShellContentRendererClient();
ShellContentRendererClient(const ShellContentRendererClient&) = delete;
ShellContentRendererClient& operator=(const ShellContentRendererClient&) =
delete;
~ShellContentRendererClient() override;
void RenderThreadStarted() override;
void RenderFrameCreated(content::RenderFrame* render_frame) override;
bool OverrideCreatePlugin(content::RenderFrame* render_frame,
const blink::WebPluginParams& params,
blink::WebPlugin** plugin) override;
void WillSendRequest(blink::WebLocalFrame* frame,
ui::PageTransition transition_type,
const blink::WebURL& upstream_url,
const blink::WebURL& target_url,
const net::SiteForCookies& site_for_cookies,
const url::Origin* initiator_origin,
GURL* new_url) override;
void RunScriptsAtDocumentStart(content::RenderFrame* render_frame) override;
void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame) override;
void SetClientsForTesting(std::unique_ptr<ExtensionsClient> extensions_client,
std::unique_ptr<ShellExtensionsRendererClient>
extensions_renderer_client);
protected:
virtual ExtensionsClient* CreateExtensionsClient();
private:
std::unique_ptr<ExtensionsClient> extensions_client_;
std::unique_ptr<ShellExtensionsRendererClient> extensions_renderer_client_;
};
}
#endif