OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" | 5 #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 const Extension* extension = | 100 const Extension* extension = |
101 extensions_service->GetExtensionByWebExtent(opener_url); | 101 extensions_service->GetExtensionByWebExtent(opener_url); |
102 if (!extension) | 102 if (!extension) |
103 return NULL; | 103 return NULL; |
104 | 104 |
105 // If the extension manifest specifies a background page, then don't allow one | 105 // If the extension manifest specifies a background page, then don't allow one |
106 // to be created here. | 106 // to be created here. |
107 if (extension->background_url().is_valid()) | 107 if (extension->background_url().is_valid()) |
108 return NULL; | 108 return NULL; |
109 | 109 |
110 // Only allow a single background contents per app. | 110 // No BackgroundContents allowed if BackgroundContentsService doesn't exist. |
111 BackgroundContentsService* service = | 111 BackgroundContentsService* service = |
112 BackgroundContentsServiceFactory::GetForProfile(profile); | 112 BackgroundContentsServiceFactory::GetForProfile(profile); |
113 if (!service || service->GetAppBackgroundContents( | 113 if (!service) |
114 ASCIIToUTF16(extension->id()))) | |
115 return NULL; | 114 return NULL; |
116 | 115 |
117 // Ensure that we're trying to open this from the extension's process. | 116 // Ensure that we're trying to open this from the extension's process. |
118 ExtensionProcessManager* process_manager = | 117 ExtensionProcessManager* process_manager = |
119 profile->GetExtensionProcessManager(); | 118 profile->GetExtensionProcessManager(); |
120 if (!site->GetProcess() || !process_manager || | 119 if (!site->GetProcess() || !process_manager || |
121 site->GetProcess() != process_manager->GetExtensionProcess(opener_url)) | 120 site->GetProcess() != process_manager->GetExtensionProcess(opener_url)) |
122 return NULL; | 121 return NULL; |
123 | 122 |
| 123 // Only allow a single background contents per app. If one already exists, |
| 124 // close it. |
| 125 BackgroundContents* existing = |
| 126 service->GetAppBackgroundContents(ASCIIToUTF16(extension->id())); |
| 127 if (existing) { |
| 128 DLOG(INFO) << "Closing existing BackgroundContents for " << opener_url; |
| 129 delete existing; |
| 130 } |
| 131 |
124 // Passed all the checks, so this should be created as a BackgroundContents. | 132 // Passed all the checks, so this should be created as a BackgroundContents. |
125 return service->CreateBackgroundContents(site, route_id, profile, frame_name, | 133 return service->CreateBackgroundContents(site, route_id, profile, frame_name, |
126 ASCIIToUTF16(extension->id())); | 134 ASCIIToUTF16(extension->id())); |
127 } | 135 } |
128 | 136 |
129 TabContents* RenderViewHostDelegateViewHelper::CreateNewWindow( | 137 TabContents* RenderViewHostDelegateViewHelper::CreateNewWindow( |
130 int route_id, | 138 int route_id, |
131 Profile* profile, | 139 Profile* profile, |
132 SiteInstance* site, | 140 SiteInstance* site, |
133 WebUI::TypeID webui_type, | 141 WebUI::TypeID webui_type, |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 DictionaryValue* inspector_settings = update.Get(); | 542 DictionaryValue* inspector_settings = update.Get(); |
535 inspector_settings->SetWithoutPathExpansion(key, | 543 inspector_settings->SetWithoutPathExpansion(key, |
536 Value::CreateStringValue(value)); | 544 Value::CreateStringValue(value)); |
537 } | 545 } |
538 | 546 |
539 void RenderViewHostDelegateHelper::ClearInspectorSettings( | 547 void RenderViewHostDelegateHelper::ClearInspectorSettings( |
540 content::BrowserContext* browser_context) { | 548 content::BrowserContext* browser_context) { |
541 Profile::FromBrowserContext(browser_context)->GetPrefs()-> | 549 Profile::FromBrowserContext(browser_context)->GetPrefs()-> |
542 ClearPref(prefs::kWebKitInspectorSettings); | 550 ClearPref(prefs::kWebKitInspectorSettings); |
543 } | 551 } |
OLD | NEW |