Chromium Code Reviews| 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 3ecc6d656c087d74c632085efd737e806c6bb621..5e5c3caddbd62743c179deb2f3d1c519c89c8e52 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, |
| + UserScript::FileList* list) { |
| + DCHECK(list->size() == 0u); |
|
Devlin
2016/08/17 16:39:30
list->empty()
lazyboy
2016/08/17 18:55:52
Done.
|
| + list->reserve((items.files.get() ? items.files->size() : 0) + |
| + (items.code.get() ? 1 : 0)); |
|
Devlin
2016/08/17 16:39:30
ditto re unique_ptr bool op
lazyboy
2016/08/17 18:55:52
Done.
|
| // 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::UserScript::File( |
| + 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::UserScript::File( |
| + 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::UserScript::File> file( |
| + new extensions::UserScript::File(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::UserScript> 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 std::unique_ptr<extensions::UserScript>(); |
| + |
| + std::unique_ptr<extensions::UserScript> script = |
| + base::WrapUnique(new extensions::UserScript()); |
| // 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 std::unique_ptr<extensions::UserScript>(); |
| } |
| 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 std::unique_ptr<extensions::UserScript>(); |
| } |
| 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( |
| @@ -229,17 +237,16 @@ bool ParseContentScripts( |
| return false; |
| } |
| - UserScript script; |
| - if (!ParseContentScript(script_value, extension, owner_base_url, &script, |
| - error)) |
| + std::unique_ptr<extensions::UserScript> 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; |
| } |