| Index: extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
|
| diff --git a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
|
| index c2667a0fbd2f46a825a1e2c4bccf9e3210bf3259..2fde9d40250bad736e51795fca4318a86b368a13 100644
|
| --- a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
|
| +++ b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
|
| @@ -86,43 +86,51 @@ HostID GenerateHostIDFromEmbedder(const extensions::Extension* extension,
|
|
|
| // Creates content script files when parsing InjectionItems of "js" or "css"
|
| // proterties, and stores them in the |result|.
|
| -void AddScriptFiles(const GURL& owner_base_url,
|
| - const extensions::Extension* extension,
|
| - const InjectionItems& items,
|
| - UserScript::FileList* result) {
|
| +void ParseScriptFiles(const GURL& owner_base_url,
|
| + const extensions::Extension* extension,
|
| + const InjectionItems& items,
|
| + extensions::BrowserScriptFileList* list) {
|
| + DCHECK(list->size() == 0u);
|
| + list->reserve((items.files.get() ? items.files->size() : 0) +
|
| + (items.code.get() ? 1 : 0));
|
| // files:
|
| if (items.files) {
|
| for (const std::string& relative : *items.files) {
|
| GURL url = owner_base_url.Resolve(relative);
|
| if (extension) {
|
| ExtensionResource resource = extension->GetResource(relative);
|
| - result->push_back(UserScript::File(resource.extension_root(),
|
| - resource.relative_path(), url));
|
| +
|
| + list->push_back(base::WrapUnique(new extensions::BrowserScriptFile(
|
| + resource.extension_root(), resource.relative_path(), url)));
|
| } else {
|
| - result->push_back(extensions::UserScript::File(base::FilePath(),
|
| - base::FilePath(), url));
|
| + list->push_back(base::WrapUnique(new extensions::BrowserScriptFile(
|
| + base::FilePath(), base::FilePath(), url)));
|
| }
|
| }
|
| }
|
| // code:
|
| if (items.code) {
|
| - extensions::UserScript::File file((base::FilePath()), (base::FilePath()),
|
| - GURL());
|
| - file.set_content(*items.code);
|
| - result->push_back(file);
|
| + std::unique_ptr<extensions::BrowserScriptFile> file(
|
| + new extensions::BrowserScriptFile(base::FilePath(), base::FilePath(),
|
| + GURL()));
|
| + file->set_content(*items.code);
|
| + list->push_back(std::move(file));
|
| }
|
| }
|
|
|
| // Parses the values stored in ContentScriptDetails, and constructs a
|
| -// UserScript.
|
| -bool ParseContentScript(const ContentScriptDetails& script_value,
|
| - const extensions::Extension* extension,
|
| - const GURL& owner_base_url,
|
| - UserScript* script,
|
| - std::string* error) {
|
| +// user script.
|
| +std::unique_ptr<extensions::BrowserUserScript> ParseContentScript(
|
| + const ContentScriptDetails& script_value,
|
| + const extensions::Extension* extension,
|
| + const GURL& owner_base_url,
|
| + std::string* error) {
|
| // matches (required):
|
| if (script_value.matches.empty())
|
| - return false;
|
| + return base::WrapUnique<extensions::BrowserUserScript>(nullptr);
|
| +
|
| + std::unique_ptr<extensions::BrowserUserScript> script =
|
| + base::WrapUnique(new extensions::BrowserUserScript);
|
|
|
| // The default for WebUI is not having special access, but we can change that
|
| // if needed.
|
| @@ -135,7 +143,7 @@ bool ParseContentScript(const ContentScriptDetails& script_value,
|
| URLPattern pattern(UserScript::ValidUserScriptSchemes(allowed_everywhere));
|
| if (pattern.Parse(match) != URLPattern::PARSE_SUCCESS) {
|
| *error = errors::kInvalidMatches;
|
| - return false;
|
| + return base::WrapUnique<extensions::BrowserUserScript>(nullptr);
|
| }
|
| script->add_url_pattern(pattern);
|
| }
|
| @@ -150,7 +158,7 @@ bool ParseContentScript(const ContentScriptDetails& script_value,
|
|
|
| if (pattern.Parse(exclude_match) != URLPattern::PARSE_SUCCESS) {
|
| *error = errors::kInvalidExcludeMatches;
|
| - return false;
|
| + return base::WrapUnique<extensions::BrowserUserScript>(nullptr);
|
| }
|
| script->add_exclude_url_pattern(pattern);
|
| }
|
| @@ -180,14 +188,14 @@ bool ParseContentScript(const ContentScriptDetails& script_value,
|
|
|
| // css:
|
| if (script_value.css) {
|
| - AddScriptFiles(owner_base_url, extension, *script_value.css,
|
| - &script->css_scripts());
|
| + ParseScriptFiles(owner_base_url, extension, *script_value.css,
|
| + &script->css_scripts());
|
| }
|
|
|
| // js:
|
| if (script_value.js) {
|
| - AddScriptFiles(owner_base_url, extension, *script_value.js,
|
| - &script->js_scripts());
|
| + ParseScriptFiles(owner_base_url, extension, *script_value.js,
|
| + &script->js_scripts());
|
| }
|
|
|
| // all_frames:
|
| @@ -206,7 +214,7 @@ bool ParseContentScript(const ContentScriptDetails& script_value,
|
| script->add_exclude_glob(glob);
|
| }
|
|
|
| - return true;
|
| + return script;
|
| }
|
|
|
| bool ParseContentScripts(
|
| @@ -215,7 +223,7 @@ bool ParseContentScripts(
|
| const HostID& host_id,
|
| bool incognito_enabled,
|
| const GURL& owner_base_url,
|
| - extensions::UserScriptList* result,
|
| + extensions::BrowserUserScriptList* result,
|
| std::string* error) {
|
| if (content_script_list.empty())
|
| return false;
|
| @@ -229,17 +237,16 @@ bool ParseContentScripts(
|
| return false;
|
| }
|
|
|
| - UserScript script;
|
| - if (!ParseContentScript(script_value, extension, owner_base_url, &script,
|
| - error))
|
| + std::unique_ptr<extensions::BrowserUserScript> script =
|
| + ParseContentScript(script_value, extension, owner_base_url, error);
|
| + if (!script.get())
|
| return false;
|
| -
|
| - script.set_id(UserScript::GenerateUserScriptID());
|
| - script.set_name(name);
|
| - script.set_incognito_enabled(incognito_enabled);
|
| - script.set_host_id(host_id);
|
| - script.set_consumer_instance_type(UserScript::WEBVIEW);
|
| - result->push_back(script);
|
| + script->set_id(UserScript::GenerateUserScriptID());
|
| + script->set_name(name);
|
| + script->set_incognito_enabled(incognito_enabled);
|
| + script->set_host_id(host_id);
|
| + script->set_consumer_instance_type(extensions::UserScript::WEBVIEW);
|
| + result->push_back(std::move(script));
|
| }
|
| return true;
|
| }
|
| @@ -504,7 +511,7 @@ WebViewInternalAddContentScriptsFunction::Run() {
|
| HostID host_id = GenerateHostIDFromEmbedder(extension(), sender_web_contents);
|
| bool incognito_enabled = browser_context()->IsOffTheRecord();
|
|
|
| - UserScriptList result;
|
| + BrowserUserScriptList result;
|
| if (!ParseContentScripts(params->content_script_list, extension(), host_id,
|
| incognito_enabled, owner_base_url, &result, &error_))
|
| return RespondNow(Error(error_));
|
|
|