Chromium Code Reviews| Index: chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
| diff --git a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
| index 4f1afa9f3cabec79ac868870aca66ae923cef978..beb7ce96e510cef333f3d25eaab22c3f9e79a4dc 100644 |
| --- a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
| +++ b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc |
| @@ -107,11 +107,10 @@ RenderViewHostDelegateViewHelper::MaybeCreateBackgroundContents( |
| if (extension->background_url().is_valid()) |
| return NULL; |
| - // Only allow a single background contents per app. |
| + // No BackgroundContents allowed if BackgroundContentsService doesn't exist. |
| BackgroundContentsService* service = |
| BackgroundContentsServiceFactory::GetForProfile(profile); |
| - if (!service || service->GetAppBackgroundContents( |
| - ASCIIToUTF16(extension->id()))) |
| + if (!service) |
| return NULL; |
| // Ensure that we're trying to open this from the extension's process. |
| @@ -121,6 +120,16 @@ RenderViewHostDelegateViewHelper::MaybeCreateBackgroundContents( |
| site->GetProcess() != process_manager->GetExtensionProcess(opener_url)) |
| return NULL; |
| + // Only allow a single background contents per app. If one already exists, |
| + // close it. |
| + BackgroundContents* existing = |
| + service->GetAppBackgroundContents(ASCIIToUTF16(extension->id())); |
| + if (existing) { |
| + DLOG(WARNING) << "Closing existing BackgroundContents for " << opener_url; |
|
brettw
2011/10/04 22:03:47
I don't quite get this code. Is this an illegal co
Andrew T Wilson (Slow)
2011/10/05 19:45:58
The warning is because "reopening an existing Back
brettw
2011/10/05 20:03:34
Let's think about this in terms of somebody random
Andrew T Wilson (Slow)
2011/10/05 20:49:13
Done.
|
| + existing->render_view_host()->ClosePage(); |
| + delete existing; |
| + } |
| + |
| // Passed all the checks, so this should be created as a BackgroundContents. |
| return service->CreateBackgroundContents(site, route_id, profile, frame_name, |
| ASCIIToUTF16(extension->id())); |