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

Unified Diff: chrome/browser/cocoa/first_run_dialog.mm

Issue 3223010: Add search engine selection dialog for Mac.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 3 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cocoa/first_run_dialog.h ('k') | chrome/browser/cocoa/search_engine_dialog_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/cocoa/first_run_dialog.mm
===================================================================
--- chrome/browser/cocoa/first_run_dialog.mm (revision 60501)
+++ chrome/browser/cocoa/first_run_dialog.mm (working copy)
@@ -1,19 +1,21 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "chrome/browser/cocoa/first_run_dialog.h"
#include "app/l10n_util_mac.h"
-#include "base/logging.h"
#include "base/mac_util.h"
-#import "base/scoped_nsobject.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/common/pref_names.h"
+#include "base/message_loop.h"
+#include "base/ref_counted.h"
#include "grit/locale_settings.h"
#import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h"
+@interface FirstRunDialogController (PrivateMethods)
+// Show the dialog.
+- (void)show;
+@end
+
namespace {
// Compare function for -[NSArray sortedArrayUsingFunction:context:] that
@@ -29,18 +31,30 @@
return NSOrderedSame;
}
+class FirstRunShowBridge : public base::RefCounted<FirstRunShowBridge> {
+ public:
+ FirstRunShowBridge(FirstRunDialogController* controller);
+
+ void ShowDialog();
+ private:
+ FirstRunDialogController* controller_;
};
+FirstRunShowBridge::FirstRunShowBridge(
+ FirstRunDialogController* controller) : controller_(controller) {
+}
+
+void FirstRunShowBridge::ShowDialog() {
+ [controller_ show];
+ MessageLoop::current()->QuitNow();
+}
+
+};
+
@implementation FirstRunDialogController
-@synthesize userDidCancel = userDidCancel_;
@synthesize statsEnabled = statsEnabled_;
-@synthesize statsCheckboxHidden = statsCheckboxHidden_;
@synthesize makeDefaultBrowser = makeDefaultBrowser_;
-@synthesize importBookmarks = importBookmarks_;
-@synthesize browserImportSelectedIndex = browserImportSelectedIndex_;
-@synthesize browserImportList = browserImportList_;
-@synthesize browserImportListHidden = browserImportListHidden_;
- (id)init {
NSString* nibpath =
@@ -50,31 +64,28 @@
if (self != nil) {
// Bound to the dialog checkbox, default to true.
statsEnabled_ = YES;
- importBookmarks_ = YES;
-
-#if defined(GOOGLE_CHROME_BUILD)
- // If the send stats option is controlled by enterprise configuration
- // management, hide the checkbox.
- const PrefService::Preference* metrics_reporting_pref =
- g_browser_process->local_state()->FindPreference(
- prefs::kMetricsReportingEnabled);
- if (metrics_reporting_pref && metrics_reporting_pref->IsManaged())
- statsCheckboxHidden_ = YES;
-#else
- // In Chromium builds all stats reporting is disabled so there's no reason
- // to display the checkbox - the setting is always OFF.
- statsCheckboxHidden_ = YES;
-#endif // !GOOGLE_CHROME_BUILD
}
return self;
}
- (void)dealloc {
- [browserImportList_ release];
[super dealloc];
}
- (IBAction)showWindow:(id)sender {
+ // The main MessageLoop has not yet run, but has been spun. If we call
+ // -[NSApplication runModalForWindow:] we will hang <http://crbug.com/54248>.
+ // Therefore the main MessageLoop is run so things work.
+
+ scoped_refptr<FirstRunShowBridge> bridge = new FirstRunShowBridge(self);
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
+ NewRunnableMethod(bridge.get(),
+ &FirstRunShowBridge::ShowDialog));
+ MessageLoop::current()->Run();
+}
+
+- (void)show {
NSWindow* win = [self window];
// Only support the sizing the window once.
@@ -106,15 +117,13 @@
[win setFrame:windowFrame display:NO];
}
- // The stats checkbox (if visible) gets some really long text, so it gets
- // word wrapped and then sized.
+ // The stats checkbox gets some really long text, so it gets word wrapped
+ // and then sized.
DCHECK(statsCheckbox_);
CGFloat statsCheckboxHeightChange = 0.0;
- if (![self statsCheckboxHidden]) {
- [GTMUILocalizerAndLayoutTweaker wrapButtonTitleForWidth:statsCheckbox_];
- statsCheckboxHeightChange =
- [GTMUILocalizerAndLayoutTweaker sizeToFitView:statsCheckbox_].height;
- }
+ [GTMUILocalizerAndLayoutTweaker wrapButtonTitleForWidth:statsCheckbox_];
+ statsCheckboxHeightChange =
+ [GTMUILocalizerAndLayoutTweaker sizeToFitView:statsCheckbox_].height;
// Walk bottom up shuffling for all the hidden views.
NSArray* subViews =
@@ -172,42 +181,15 @@
[NSApp runModalForWindow:win];
}
-- (void)closeDialog {
+- (IBAction)ok:(id)sender {
[[self window] close];
[NSApp stopModal];
}
-- (IBAction)ok:(id)sender {
- [self closeDialog];
-}
-
-- (IBAction)cancel:(id)sender {
- [self closeDialog];
- [self setUserDidCancel:YES];
-}
-
- (IBAction)learnMore:(id)sender {
NSString* urlStr = l10n_util::GetNSString(IDS_LEARN_MORE_REPORTING_URL);
NSURL* learnMoreUrl = [NSURL URLWithString:urlStr];
[[NSWorkspace sharedWorkspace] openURL:learnMoreUrl];
}
-// Custom property getters
-
-- (BOOL)importBookmarks {
- // If the UI for browser import is hidden, report the choice as off.
- if ([self browserImportListHidden]) {
- return NO;
- }
- return importBookmarks_;
-}
-
-- (BOOL)statsEnabled {
- // If the UI for stats is hidden, report the choice as off.
- if ([self statsCheckboxHidden]) {
- return NO;
- }
- return statsEnabled_;
-}
-
@end
« no previous file with comments | « chrome/browser/cocoa/first_run_dialog.h ('k') | chrome/browser/cocoa/search_engine_dialog_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698