blob: 5e4fc692d80ecc0c2482c276e8dff5cbb4fa593a [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDERER_CLIENT_H_
#define CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDERER_CLIENT_H_
#include <memory>
#include <string>
#include "extensions/renderer/extensions_renderer_client.h"
class GURL;
namespace blink {
class WebURL;
}
namespace content {
struct WebPluginInfo;
}
namespace extensions {
class RendererPermissionsPolicyDelegate;
}
namespace ukm {
class MojoUkmRecorder;
}
class ChromeExtensionsRendererClient
: public extensions::ExtensionsRendererClient {
public:
ChromeExtensionsRendererClient();
ChromeExtensionsRendererClient(const ChromeExtensionsRendererClient&) =
delete;
ChromeExtensionsRendererClient& operator=(
const ChromeExtensionsRendererClient&) = delete;
~ChromeExtensionsRendererClient() override;
// Creates the global instance of the ChromeExtensionsRendererClient, which
// will then set itself as the sole ExtensionsRendererClient.
// Note: This class should be accessed through
// ExtensionsRendererClient::Get(). Callers should not assume a particular
// implementation.
// There's an exception for the static methods below, which just live here
// for want of a better home.
static void Create();
// extensions::ExtensionsRendererClient implementation.
bool IsIncognitoProcess() const override;
int GetLowestIsolatedWorldId() const override;
static void DidBlockMimeHandlerViewForDisallowedPlugin(
const blink::WebElement& plugin_element);
static bool MaybeCreateMimeHandlerView(
const blink::WebElement& plugin_element,
const GURL& resource_url,
const std::string& mime_type,
const content::WebPluginInfo& plugin_info);
private:
// extensions::ExtensionsRendererClient implementation.
void FinishInitialization() override;
std::unique_ptr<extensions::ResourceRequestPolicy::Delegate>
CreateResourceRequestPolicyDelegate() override;
void RecordMetricsForURLRequest(blink::WebLocalFrame* frame,
const blink::WebURL& target_url) override;
std::unique_ptr<ukm::MojoUkmRecorder> ukm_recorder_;
std::unique_ptr<extensions::RendererPermissionsPolicyDelegate>
permissions_policy_delegate_;
};
#endif // CHROME_RENDERER_EXTENSIONS_CHROME_EXTENSIONS_RENDERER_CLIENT_H_