// 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
