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

Side by Side Diff: chrome/browser/background/background_contents_service.cc

Issue 8496024: Don't close crashed tabs from extensions with background pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mpcomplete's Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_crash_recovery_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/background/background_contents_service.h" 5 #include "chrome/browser/background/background_contents_service.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 private: 91 private:
92 Profile* profile_; 92 Profile* profile_;
93 bool is_hosted_app_; 93 bool is_hosted_app_;
94 std::string extension_id_; 94 std::string extension_id_;
95 95
96 DISALLOW_COPY_AND_ASSIGN(CrashNotificationDelegate); 96 DISALLOW_COPY_AND_ASSIGN(CrashNotificationDelegate);
97 }; 97 };
98 98
99 void ShowBalloon(const Extension* extension, Profile* profile) { 99 void ShowBalloon(const Extension* extension, Profile* profile) {
100 string16 message = l10n_util::GetStringFUTF16( 100 string16 message = l10n_util::GetStringFUTF16(
101 extension->is_hosted_app() ? IDS_BACKGROUND_CRASHED_APP_BALLOON_MESSAGE : 101 extension->is_app() ? IDS_BACKGROUND_CRASHED_APP_BALLOON_MESSAGE :
102 IDS_BACKGROUND_CRASHED_EXTENSION_BALLOON_MESSAGE, 102 IDS_BACKGROUND_CRASHED_EXTENSION_BALLOON_MESSAGE,
103 UTF8ToUTF16(extension->name())); 103 UTF8ToUTF16(extension->name()));
104 string16 content_url = DesktopNotificationService::CreateDataUrl( 104 string16 content_url = DesktopNotificationService::CreateDataUrl(
105 extension->GetIconURL(Extension::EXTENSION_ICON_SMALLISH, 105 extension->GetIconURL(Extension::EXTENSION_ICON_SMALLISH,
106 ExtensionIconSet::MATCH_BIGGER), 106 ExtensionIconSet::MATCH_BIGGER),
107 string16(), message, WebKit::WebTextDirectionDefault); 107 string16(), message, WebKit::WebTextDirectionDefault);
108 Notification notification( 108 Notification notification(
109 extension->url(), GURL(content_url), string16(), string16(), 109 extension->url(), GURL(content_url), string16(), string16(),
110 new CrashNotificationDelegate(profile, extension)); 110 new CrashNotificationDelegate(profile, extension));
111 g_browser_process->notification_ui_manager()->Add(notification, profile); 111 g_browser_process->notification_ui_manager()->Add(notification, profile);
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 // an EXTENSION_UNLOADED notification. This UNLOADED signal causes all the 292 // an EXTENSION_UNLOADED notification. This UNLOADED signal causes all the
293 // notifications for this extension to be cancelled by 293 // notifications for this extension to be cancelled by
294 // DesktopNotificationService. For this reason, instead of showing the 294 // DesktopNotificationService. For this reason, instead of showing the
295 // balloon right now, we schedule it to show a little later. 295 // balloon right now, we schedule it to show a little later.
296 MessageLoop::current()->PostTask( 296 MessageLoop::current()->PostTask(
297 FROM_HERE, base::Bind(&ShowBalloon, extension, profile)); 297 FROM_HERE, base::Bind(&ShowBalloon, extension, profile));
298 break; 298 break;
299 } 299 }
300 case chrome::NOTIFICATION_EXTENSION_UNLOADED: 300 case chrome::NOTIFICATION_EXTENSION_UNLOADED:
301 switch (content::Details<UnloadedExtensionInfo>(details)->reason) { 301 switch (content::Details<UnloadedExtensionInfo>(details)->reason) {
302 // Intentionally fall through. 302 case extension_misc::UNLOAD_REASON_DISABLE: // Fall through.
303 case extension_misc::UNLOAD_REASON_DISABLE: 303 case extension_misc::UNLOAD_REASON_TERMINATE: // Fall through.
304 case extension_misc::UNLOAD_REASON_UNINSTALL: 304 case extension_misc::UNLOAD_REASON_UNINSTALL:
305 ShutdownAssociatedBackgroundContents( 305 ShutdownAssociatedBackgroundContents(
306 ASCIIToUTF16(content::Details<UnloadedExtensionInfo>(details)-> 306 ASCIIToUTF16(content::Details<UnloadedExtensionInfo>(details)->
307 extension->id())); 307 extension->id()));
308 break; 308 break;
309 case extension_misc::UNLOAD_REASON_UPDATE: { 309 case extension_misc::UNLOAD_REASON_UPDATE: {
310 // If there is a manifest specified background page, then shut it down 310 // If there is a manifest specified background page, then shut it down
311 // here, since if the updated extension still has the background page, 311 // here, since if the updated extension still has the background page,
312 // then it will be loaded from LOADED callback. Otherwise, leave 312 // then it will be loaded from LOADED callback. Otherwise, leave
313 // BackgroundContents in place. 313 // BackgroundContents in place.
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 TabContents* new_contents, 574 TabContents* new_contents,
575 WindowOpenDisposition disposition, 575 WindowOpenDisposition disposition,
576 const gfx::Rect& initial_pos, 576 const gfx::Rect& initial_pos,
577 bool user_gesture) { 577 bool user_gesture) {
578 Browser* browser = BrowserList::GetLastActiveWithProfile( 578 Browser* browser = BrowserList::GetLastActiveWithProfile(
579 Profile::FromBrowserContext(new_contents->browser_context())); 579 Profile::FromBrowserContext(new_contents->browser_context()));
580 if (!browser) 580 if (!browser)
581 return; 581 return;
582 browser->AddTabContents(new_contents, disposition, initial_pos, user_gesture); 582 browser->AddTabContents(new_contents, disposition, initial_pos, user_gesture);
583 } 583 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_crash_recovery_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698