diff options
-rw-r--r-- | chrome/browser/cocoa/import_progress_dialog.mm | 15 | ||||
-rw-r--r-- | chrome/browser/importer/nss_decryptor_mac.mm | 4 |
2 files changed, 17 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]; } diff --git a/chrome/browser/importer/nss_decryptor_mac.mm b/chrome/browser/importer/nss_decryptor_mac.mm index dc6dd0d..e319c74 100644 --- a/chrome/browser/importer/nss_decryptor_mac.mm +++ b/chrome/browser/importer/nss_decryptor_mac.mm @@ -24,6 +24,10 @@ const wchar_t NSSDecryptor::kNSS3Library[] = L"libnss3.dylib"; // DYLD_FALLBACK_LIBRARY_PATH set on startup to said directory. bool NSSDecryptor::Init(const std::wstring& dll_path, const std::wstring& db_path) { + if (getenv("DYLD_FALLBACK_LIBRARY_PATH") == NULL) { + LOG(ERROR) << "DYLD_FALLBACK_LIBRARY_PATH variable not set"; + return false; + } FilePath dylib_file_path = FilePath::FromWStringHack(dll_path); FilePath nss3_path = dylib_file_path.Append("libnss3.dylib"); |