If default browser is set to FF, and Chrome is run as first-run with an empty profile, import ignores FF data and imports from Safari instead.
BUG=61112
TEST=see bug.
Review URL: http://codereview.chromium.org/4206002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64298 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/cocoa/search_engine_dialog_controller.h b/chrome/browser/cocoa/search_engine_dialog_controller.h
index a410614..0cc06f2 100644
--- a/chrome/browser/cocoa/search_engine_dialog_controller.h
+++ b/chrome/browser/cocoa/search_engine_dialog_controller.h
@@ -6,6 +6,7 @@
#include <vector>
+#import "base/ref_counted.h"
#import "base/scoped_nsobject.h"
#include "base/scoped_ptr.h"
@@ -27,7 +28,7 @@
TemplateURLModel* searchEnginesModel_;
// Bridge to the C++ world.
- scoped_ptr<SearchEngineDialogControllerBridge> bridge_;
+ scoped_refptr<SearchEngineDialogControllerBridge> bridge_;
// Offered search engine choices.
std::vector<const TemplateURL*> choices_;
diff --git a/chrome/browser/cocoa/search_engine_dialog_controller.mm b/chrome/browser/cocoa/search_engine_dialog_controller.mm
index 044bb589..0888050 100644
--- a/chrome/browser/cocoa/search_engine_dialog_controller.mm
+++ b/chrome/browser/cocoa/search_engine_dialog_controller.mm
@@ -40,7 +40,9 @@
- (IBAction)searchEngineSelected:(id)sender;
@end
-class SearchEngineDialogControllerBridge : public TemplateURLModelObserver {
+class SearchEngineDialogControllerBridge :
+ public base::RefCounted<SearchEngineDialogControllerBridge>,
+ public TemplateURLModelObserver {
public:
SearchEngineDialogControllerBridge(SearchEngineDialogController* controller);
@@ -71,7 +73,7 @@
ofType:@"nib"];
self = [super initWithWindowNibPath:nibpath owner:self];
if (self != nil) {
- bridge_.reset(new SearchEngineDialogControllerBridge(self));
+ bridge_ = new SearchEngineDialogControllerBridge(self);
}
return self;
}
@@ -85,11 +87,15 @@
searchEnginesModel_->AddObserver(bridge_.get());
if (searchEnginesModel_->loaded()) {
- [self onTemplateURLModelChanged];
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
+ NewRunnableMethod(
+ bridge_.get(),
+ &SearchEngineDialogControllerBridge::OnTemplateURLModelChanged));
} else {
searchEnginesModel_->Load();
- MessageLoop::current()->Run();
}
+ MessageLoop::current()->Run();
}
- (void)onTemplateURLModelChanged {
diff --git a/chrome/browser/importer/importer_list.cc b/chrome/browser/importer/importer_list.cc
index f529284c..6ac65174 100644
--- a/chrome/browser/importer/importer_list.cc
+++ b/chrome/browser/importer/importer_list.cc
@@ -35,9 +35,9 @@
}
void ImporterList::DetectSourceProfiles() {
+// The first run import will automatically take settings from the first
+// profile detected, which should be the user's current default.
#if defined(OS_WIN)
- // The order in which detect is called determines the order
- // in which the options appear in the dropdown combo-box
if (ShellIntegration::IsFirefoxDefaultBrowser()) {
DetectFirefoxProfiles();
DetectIEProfiles();
@@ -47,10 +47,15 @@
}
// TODO(brg) : Current UI requires win_util.
DetectGoogleToolbarProfiles();
+#elif defined(OS_MACOSX)
+ if (ShellIntegration::IsFirefoxDefaultBrowser()) {
+ DetectFirefoxProfiles();
+ DetectSafariProfiles();
+ } else {
+ DetectSafariProfiles();
+ DetectFirefoxProfiles();
+ }
#else
-#if defined(OS_MACOSX)
- DetectSafariProfiles();
-#endif
DetectFirefoxProfiles();
#endif
}