Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(272)

Unified Diff: extensions/browser/api/guest_view/web_view/web_view_internal_api.cc

Issue 2227193002: Make UserScript non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: uplaod with base Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_));

Powered by Google App Engine
This is Rietveld 408576698