| Index: chrome/browser/app_modal_dialog_mac.mm
|
| ===================================================================
|
| --- chrome/browser/app_modal_dialog_mac.mm (revision 38222)
|
| +++ chrome/browser/app_modal_dialog_mac.mm (working copy)
|
| @@ -1,4 +1,4 @@
|
| -// 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.
|
|
|
| @@ -6,150 +6,11 @@
|
|
|
| #import <Cocoa/Cocoa.h>
|
|
|
| -#include "app/l10n_util_mac.h"
|
| -#include "app/message_box_flags.h"
|
| -#import "base/cocoa_protocols_mac.h"
|
| -#include "base/sys_string_conversions.h"
|
| -#include "grit/app_strings.h"
|
| -#include "grit/generated_resources.h"
|
| -
|
| -// Helper object that receives the notification that the dialog/sheet is
|
| -// going away. Is responsible for cleaning itself up.
|
| -@interface AppModalDialogHelper : NSObject<NSAlertDelegate> {
|
| - @private
|
| - NSAlert* alert_;
|
| - NSTextField* textField_; // WEAK; owned by alert_
|
| -}
|
| -
|
| -- (NSAlert*)alert;
|
| -- (NSTextField*)textField;
|
| -- (void)alertDidEnd:(NSAlert *)alert
|
| - returnCode:(int)returnCode
|
| - contextInfo:(void*)contextInfo;
|
| -
|
| -@end
|
| -
|
| -@implementation AppModalDialogHelper
|
| -
|
| -- (NSAlert*)alert {
|
| - alert_ = [[NSAlert alloc] init];
|
| - return alert_;
|
| -}
|
| -
|
| -- (NSTextField*)textField {
|
| - textField_ = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 300, 22)];
|
| - [alert_ setAccessoryView:textField_];
|
| - [textField_ release];
|
| -
|
| - return textField_;
|
| -}
|
| -
|
| -- (void)dealloc {
|
| - [alert_ release];
|
| - [super dealloc];
|
| -}
|
| -
|
| -// |contextInfo| is the bridge back to the C++ AppModalDialog. When complete,
|
| -// autorelease to clean ourselves up.
|
| -- (void)alertDidEnd:(NSAlert*)alert
|
| - returnCode:(int)returnCode
|
| - contextInfo:(void*)contextInfo {
|
| - AppModalDialog* bridge = reinterpret_cast<AppModalDialog*>(contextInfo);
|
| - std::wstring input;
|
| - if (textField_)
|
| - input = base::SysNSStringToWide([textField_ stringValue]);
|
| - switch (returnCode) {
|
| - case NSAlertFirstButtonReturn: { // OK
|
| - bool shouldSuppress = false;
|
| - if ([alert showsSuppressionButton])
|
| - shouldSuppress = [[alert suppressionButton] state] == NSOnState;
|
| - bridge->OnAccept(input, shouldSuppress);
|
| - break;
|
| - }
|
| - case NSAlertSecondButtonReturn: { // Cancel
|
| - bridge->OnCancel();
|
| - break;
|
| - }
|
| - case NSRunStoppedResponse: { // Window was closed underneath us
|
| - // Need to call OnCancel() because there is some cleanup that needs
|
| - // to be done. It won't call back to the javascript since the
|
| - // AppModalDialog knows that the TabContents was destroyed.
|
| - bridge->OnCancel();
|
| - break;
|
| - }
|
| - default: {
|
| - NOTREACHED();
|
| - }
|
| - }
|
| - [self autorelease];
|
| - delete bridge; // Done with the dialog, it needs be destroyed.
|
| -}
|
| -@end
|
| -
|
| AppModalDialog::~AppModalDialog() {
|
| }
|
|
|
| void AppModalDialog::CreateAndShowDialog() {
|
| - // Determine the names of the dialog buttons based on the flags. "Default"
|
| - // is the OK button. "Other" is the cancel button. We don't use the
|
| - // "Alternate" button in NSRunAlertPanel.
|
| - NSString* default_button = l10n_util::GetNSStringWithFixup(IDS_APP_OK);
|
| - NSString* other_button = l10n_util::GetNSStringWithFixup(IDS_APP_CANCEL);
|
| - bool text_field = false;
|
| - bool one_button = false;
|
| - switch (dialog_flags_) {
|
| - case MessageBoxFlags::kIsJavascriptAlert:
|
| - one_button = true;
|
| - break;
|
| - case MessageBoxFlags::kIsJavascriptConfirm:
|
| - if (is_before_unload_dialog_) {
|
| - default_button = l10n_util::GetNSStringWithFixup(
|
| - IDS_BEFOREUNLOAD_MESSAGEBOX_OK_BUTTON_LABEL);
|
| - other_button = l10n_util::GetNSStringWithFixup(
|
| - IDS_BEFOREUNLOAD_MESSAGEBOX_CANCEL_BUTTON_LABEL);
|
| - }
|
| - break;
|
| - case MessageBoxFlags::kIsJavascriptPrompt:
|
| - text_field = true;
|
| - break;
|
| -
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -
|
| - // Create a helper which will receive the sheet ended selector. It will
|
| - // delete itself when done. It doesn't need anything passed to its init
|
| - // as it will get a contextInfo parameter.
|
| - AppModalDialogHelper* helper = [[AppModalDialogHelper alloc] init];
|
| -
|
| - // Show the modal dialog.
|
| - NSAlert* alert = [helper alert];
|
| - dialog_ = alert;
|
| - NSTextField* field = nil;
|
| - if (text_field) {
|
| - field = [helper textField];
|
| - [field setStringValue:base::SysWideToNSString(default_prompt_text_)];
|
| - }
|
| - [alert setDelegate:helper];
|
| - [alert setInformativeText:base::SysWideToNSString(message_text_)];
|
| - [alert setMessageText:base::SysWideToNSString(title_)];
|
| - [alert addButtonWithTitle:default_button];
|
| - if (!one_button)
|
| - [alert addButtonWithTitle:other_button];
|
| - if (display_suppress_checkbox_) {
|
| - [alert setShowsSuppressionButton:YES];
|
| - NSString* suppression_title = l10n_util::GetNSStringWithFixup(
|
| - IDS_JAVASCRIPT_MESSAGEBOX_SUPPRESS_OPTION);
|
| - [[alert suppressionButton] setTitle:suppression_title];
|
| - }
|
| -
|
| - [alert beginSheetModalForWindow:nil // nil here makes it app-modal
|
| - modalDelegate:helper
|
| - didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
|
| - contextInfo:this];
|
| -
|
| - if (field)
|
| - [[alert window] makeFirstResponder:field];
|
| + NOTIMPLEMENTED();
|
| }
|
|
|
| void AppModalDialog::ActivateModalDialog() {
|
| @@ -162,16 +23,3 @@
|
| [NSApp endSheet:[alert window]];
|
| dialog_ = nil;
|
| }
|
| -
|
| -int AppModalDialog::GetDialogButtons() {
|
| - NOTIMPLEMENTED();
|
| - return 0;
|
| -}
|
| -
|
| -void AppModalDialog::AcceptWindow() {
|
| - NOTIMPLEMENTED();
|
| -}
|
| -
|
| -void AppModalDialog::CancelWindow() {
|
| - NOTIMPLEMENTED();
|
| -}
|
|
|