Chromium Code Reviews| Index: extensions/browser/web_ui_user_script_loader.cc |
| diff --git a/extensions/browser/web_ui_user_script_loader.cc b/extensions/browser/web_ui_user_script_loader.cc |
| index 3cd326efd2c7f0617b7205fe71ab9e38849202a8..00fc3038c5342ae6bfe0be6469b099f47cabfadb 100644 |
| --- a/extensions/browser/web_ui_user_script_loader.cc |
| +++ b/extensions/browser/web_ui_user_script_loader.cc |
| @@ -10,6 +10,7 @@ |
| #include "content/public/browser/browser_context.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "extensions/browser/content_verifier.h" |
| +#include "extensions/browser/extensions_browser_client.h" |
| namespace { |
| using LoadScriptsCallback = |
| @@ -30,11 +31,19 @@ void SerializeOnFileThread(scoped_ptr<extensions::UserScriptList> user_scripts, |
| struct WebUIUserScriptLoader::UserScriptRenderInfo { |
| int render_process_id; |
| int render_view_id; |
| + bool is_incognito; |
| - UserScriptRenderInfo() : render_process_id(-1), render_view_id(-1) {} |
| + UserScriptRenderInfo() |
| + : render_process_id(-1), |
| + render_view_id(-1), |
| + is_incognito(false) {} |
| - UserScriptRenderInfo(int render_process_id, int render_view_id) |
| - : render_process_id(render_process_id), render_view_id(render_view_id) {} |
| + UserScriptRenderInfo(int render_process_id, |
| + int render_view_id, |
| + bool is_incognito) |
| + : render_process_id(render_process_id), |
| + render_view_id(render_view_id), |
| + is_incognito(is_incognito) {} |
| bool operator<(const UserScriptRenderInfo& other) { |
| if (render_process_id != other.render_process_id) |
| @@ -43,6 +52,9 @@ struct WebUIUserScriptLoader::UserScriptRenderInfo { |
| if (render_view_id != other.render_view_id) |
| return render_view_id < other.render_view_id; |
| + if (is_incognito != other.is_incognito) |
| + return is_incognito == false; |
| + |
| return false; |
| } |
| }; |
| @@ -63,8 +75,9 @@ WebUIUserScriptLoader::~WebUIUserScriptLoader() { |
| void WebUIUserScriptLoader::AddScripts( |
| const std::set<extensions::UserScript>& scripts, |
| int render_process_id, |
| - int render_view_id) { |
| - UserScriptRenderInfo info(render_process_id, render_view_id); |
| + int render_view_id, |
| + bool is_incognito) { |
| + UserScriptRenderInfo info(render_process_id, render_view_id, is_incognito); |
| for (const extensions::UserScript& script : scripts) { |
| script_render_info_map_.insert( |
| std::pair<int, UserScriptRenderInfo>(script.id(), info)); |
| @@ -94,10 +107,16 @@ void WebUIUserScriptLoader::LoadScripts( |
| int render_process_id = iter->second.render_process_id; |
| int render_view_id = iter->second.render_view_id; |
| - CreateWebUIURLFetchers(&script.js_scripts(), render_process_id, |
| - render_view_id); |
| - CreateWebUIURLFetchers(&script.css_scripts(), render_process_id, |
| - render_view_id); |
| + content::BrowserContext* browser_context = iter->second.is_incognito |
|
Devlin
2015/04/23 17:53:47
Can't we basically replace this whole patch with
c
|
| + ? extensions::ExtensionsBrowserClient::Get()->GetOffTheRecordContext( |
| + UserScriptLoader::browser_context()) |
| + : UserScriptLoader::browser_context(); |
| + DCHECK(browser_context); |
| + |
| + CreateWebUIURLFetchers(&script.js_scripts(), browser_context, |
| + render_process_id, render_view_id); |
| + CreateWebUIURLFetchers(&script.css_scripts(), browser_context, |
| + render_process_id, render_view_id); |
| script_render_info_map_.erase(script.id()); |
| } |
| @@ -113,6 +132,7 @@ void WebUIUserScriptLoader::LoadScripts( |
| void WebUIUserScriptLoader::CreateWebUIURLFetchers( |
| extensions::UserScript::FileList* script_files, |
| + content::BrowserContext* browser_context, |
| int render_process_id, |
| int render_view_id) { |
| for (extensions::UserScript::File& file : *script_files) { |
| @@ -121,7 +141,7 @@ void WebUIUserScriptLoader::CreateWebUIURLFetchers( |
| // loader is destroyed, all the fetchers will be destroyed. Therefore, |
| // we are sure it is safe to use base::Unretained(this) here. |
| scoped_ptr<WebUIURLFetcher> fetcher(new WebUIURLFetcher( |
| - browser_context(), render_process_id, render_view_id, file.url(), |
| + browser_context, render_process_id, render_view_id, file.url(), |
| base::Bind(&WebUIUserScriptLoader::OnSingleWebUIURLFetchComplete, |
| base::Unretained(this), &file))); |
| fetchers_.push_back(fetcher.release()); |