summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/cocoa/import_progress_dialog.mm15
-rw-r--r--chrome/browser/importer/nss_decryptor_mac.mm4
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");