blob: 21a4c0ed61ab115640bb4051730e6ad7f37f2faf [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/host_id.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 HostID& host_id);
virtual ~InjectionHost();
virtual 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::AccessType CanExecuteOnFrame(
const GURL& document_url,
content::RenderFrame* render_frame,
int tab_id,
bool is_declarative) const = 0;
const HostID& id() const { return id_; }
private:
// The ID of the host.
HostID id_;
DISALLOW_COPY_AND_ASSIGN(InjectionHost);
};
#endif // EXTENSIONS_RENDERER_INJECTION_HOST_H