12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_CONTENT_SCRIPTS_HANDLER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_CONTENT_SCRIPTS_HANDLER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/manifest_handler.h" 12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "extensions/common/user_script.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class URLPatternSet; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ContentScriptsInfo : public Extension::ManifestData { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentScriptsInfo(); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~ContentScriptsInfo(); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Paths to the content scripts the extension contains (possibly empty). 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UserScriptList content_scripts; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the content scripts for the extension (if the extension has 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // no content scripts, this returns an empty list). 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const UserScriptList& GetContentScripts(const Extension* extension); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Returns the list of hosts that this extension can run content scripts on. 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static URLPatternSet GetScriptableHosts(const Extension* extension); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns true if the extension has a content script declared at |url|. 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static bool ExtensionHasScriptAtURL(const Extension* extension, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& url); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Parses the "content_scripts" manifest key. 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ContentScriptsHandler : public ManifestHandler { 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentScriptsHandler(); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~ContentScriptsHandler(); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool Validate(const Extension* extension, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string* error, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<InstallWarning>* warnings) const OVERRIDE; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual const std::vector<std::string> Keys() const OVERRIDE; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ContentScriptsHandler); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_CONTENT_SCRIPTS_HANDLER_H_ 57