blob: 21a1a51ef256e4833c52292ceafc2003be577489 [file] [log] [blame]
// Copyright 2015 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 EXTENSIONS_RENDERER_INJECTION_HOST_H_
#define EXTENSIONS_RENDERER_INJECTION_HOST_H_
#include "base/macros.h"
#include "extensions/common/mojom/host_id.mojom.h"
#include "extensions/common/permissions/permissions_data.h"
#include "url/gurl.h"
namespace content {
class RenderFrame;
}
// An interface for all kinds of hosts who own user scripts.
class InjectionHost {
public:
InjectionHost(const extensions::mojom::HostID& host_id);
virtual ~InjectionHost();
// Returns the CSP to be used for the isolated world. Currently this only
// bypasses the main world CSP. If null is returned, the main world CSP is not
// bypassed.
virtual const std::string* GetContentSecurityPolicy() const = 0;
// The base url for the host.
virtual const GURL& url() const = 0;
// The human-readable name of the host.
virtual const std::string& name() const = 0;
// Returns true if the script should execute.
virtual extensions::PermissionsData::PageAccess CanExecuteOnFrame(
const GURL& document_url,
content::RenderFrame* render_frame,
int tab_id,
bool is_declarative) const = 0;
const extensions::mojom::HostID& id() const { return id_; }
private:
// The ID of the host.
extensions::mojom::HostID id_;
DISALLOW_COPY_AND_ASSIGN(InjectionHost);
};
#endif // EXTENSIONS_RENDERER_INJECTION_HOST_H_