summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/import_progress_dialog.mm
diff options
context:
space:
mode:
authorjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-02 16:22:02 +0000
committerjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-02 16:22:02 +0000
commit9b9fe99f079f53eb1276afab14886af7e46b0288 (patch)
treed269f7ec3ada339ce784e44b2e11cc26e74d08b4 /chrome/browser/cocoa/import_progress_dialog.mm
parent185ef60458a4b929eea8f724b67317733e408998 (diff)
downloadchromium_src-9b9fe99f079f53eb1276afab14886af7e46b0288.zip
chromium_src-9b9fe99f079f53eb1276afab14886af7e46b0288.tar.gz
chromium_src-9b9fe99f079f53eb1276afab14886af7e46b0288.tar.bz2
* Spin a modal loop so that messages that cause Chrome UI to be shown don't come through, this fixes a crash in the first run import dialog.
* Fail early if NSSDecryptor detects that the environment isn't set up write to load NSS libraries. BUG=19169 TEST=See repro instructions in bug. Review URL: http://codereview.chromium.org/179073 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25174 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/import_progress_dialog.mm')
-rw-r--r--chrome/browser/cocoa/import_progress_dialog.mm15
1 files changed, 13 insertions, 2 deletions
diff --git a/chrome/browser/cocoa/import_progress_dialog.mm b/chrome/browser/cocoa/import_progress_dialog.mm
index 86cd872..a971f80 100644
--- a/chrome/browser/cocoa/import_progress_dialog.mm
+++ b/chrome/browser/cocoa/import_progress_dialog.mm
@@ -138,7 +138,8 @@ NSString* keyForImportItem(ImportItem item) {
[self closeDialog];
[self release];
- MessageLoop::current()->Quit();
+ // Break out of modal event loop.
+ [NSApp stopModal];
}
@end
@@ -171,6 +172,16 @@ void StartImportingWithUI(gfx::NativeWindow parent_window,
new ProfileWriter(target_profile),
first_run);
+
+ // Display the window while spinning a message loop.
+ // For details on why we need a modal message loop see http://crbug.com/19169
+ NSWindow* progress_window = [progress_dialog_ window];
+ NSModalSession session = [NSApp beginModalSessionForWindow:progress_window];
[progress_dialog_ showWindow:nil];
- MessageLoop::current()->Run();
+ while(1) {
+ if ([NSApp runModalSession:session] != NSRunContinuesResponse)
+ break;
+ MessageLoop::current()->RunAllPending();
+ }
+ [NSApp endModalSession:session];
}