diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-23 20:55:15 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-23 20:55:15 +0000 |
commit | 91c7fcaec1bec76a05d938e4e436d1efaa7eee8c (patch) | |
tree | e1173aa6da34adda9034cae6d13bc5dba8c6a6c5 /chrome/browser/cookie_modal_dialog_mac.mm | |
parent | ca25209a0338e538e0199b07bbd5c2411f52e906 (diff) | |
download | chromium_src-91c7fcaec1bec76a05d938e4e436d1efaa7eee8c.zip chromium_src-91c7fcaec1bec76a05d938e4e436d1efaa7eee8c.tar.gz chromium_src-91c7fcaec1bec76a05d938e4e436d1efaa7eee8c.tar.bz2 |
Revert 39756 - Mac: Cookie confirmation dialog.
This is not the final UI (the "more info" disclosure triangle is missing), but it's pretty close and, more importantly, functional.
BUG=34894
TEST=Go to Preferences>under the hood>content settings>cookies and select "ask me every time". Then browser around and note that a message box pops up all the time. All the buttons on the message box should do what they claim.
Review URL: http://codereview.chromium.org/650206
TBR=thakis@chromium.org
Review URL: http://codereview.chromium.org/652150
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39766 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cookie_modal_dialog_mac.mm')
-rw-r--r-- | chrome/browser/cookie_modal_dialog_mac.mm | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/chrome/browser/cookie_modal_dialog_mac.mm b/chrome/browser/cookie_modal_dialog_mac.mm deleted file mode 100644 index b41437c..0000000 --- a/chrome/browser/cookie_modal_dialog_mac.mm +++ /dev/null @@ -1,145 +0,0 @@ -// 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. - -#include "chrome/browser/cookie_modal_dialog.h" - -#import <Cocoa/Cocoa.h> - -#include "app/l10n_util_mac.h" -#import "base/cocoa_protocols_mac.h" -#include "base/scoped_nsobject.h" -#include "base/logging.h" -#include "chrome/browser/tab_contents/tab_contents.h" -#include "grit/generated_resources.h" - -// Helper object that will become a real NSWindowController in the future. -@interface CookiePromptModalDialogHelper : NSObject<NSAlertDelegate> { - @private - scoped_nsobject<NSAlert> alert_; - scoped_nsobject<NSMatrix> matrix_; -} - -- (id)initWithBridge:(CookiePromptModalDialog*)bridge; -- (NSAlert*)alert; -- (void)alertDidEnd:(NSAlert*)alert - returnCode:(int)returnCode - contextInfo:(void*)contextInfo; -@end - -@implementation CookiePromptModalDialogHelper - -- (id)initWithBridge:(CookiePromptModalDialog*)bridge { - // The cookie confirmation dialog needs both a radio group and a disclosure - // triangle, so it's too complex to be shown as an NSAlert -- a custom window - // is required. However, that requires small modifications to the parent class - // AppModalDialog, so I'll do that in another CL. - if ((self = [super init])) { - alert_.reset([[NSAlert alloc] init]); - - string16 displayHost = UTF8ToUTF16(bridge->origin().host()); - int descriptionStringId = - bridge->dialog_type() == CookiePromptModalDialog::DIALOG_TYPE_COOKIE ? - IDS_COOKIE_ALERT_LABEL : IDS_DATA_ALERT_LABEL; - NSString* description = - l10n_util::GetNSStringF(descriptionStringId, displayHost); - NSString* allow = - l10n_util::GetNSStringWithFixup(IDS_COOKIE_ALERT_ALLOW_BUTTON); - NSString* block = - l10n_util::GetNSStringWithFixup(IDS_COOKIE_ALERT_BLOCK_BUTTON); - - NSString* remember = - l10n_util::GetNSStringF(IDS_COOKIE_ALERT_REMEMBER_RADIO, displayHost); - NSString* ask = l10n_util::GetNSStringWithFixup(IDS_COOKIE_ALERT_ASK_RADIO); - - scoped_nsobject<NSButtonCell> prototype([[NSButtonCell alloc] init]); - [prototype.get() setButtonType:NSRadioButton]; - matrix_.reset( - [[NSMatrix alloc] initWithFrame:NSZeroRect - mode:NSRadioModeMatrix - prototype:prototype - numberOfRows:2 - numberOfColumns:1]); - NSArray *cellArray = [matrix_.get() cells]; - [[cellArray objectAtIndex:0] setTitle:remember]; - [[cellArray objectAtIndex:1] setTitle:ask]; - [matrix_.get() sizeToFit]; - [alert_.get() setAccessoryView:matrix_.get()]; - - [alert_.get() setMessageText:description]; - [alert_.get() addButtonWithTitle:allow]; - [alert_.get() addButtonWithTitle:block]; - } - return self; -} - -- (NSAlert*)alert { - return alert_.get(); -} - -// |contextInfo| is the bridge back to the C++ CookiePromptModalDialog. -- (void)alertDidEnd:(NSAlert*)alert - returnCode:(int)returnCode - contextInfo:(void*)contextInfo { - CookiePromptModalDialog* bridge = - reinterpret_cast<CookiePromptModalDialog*>(contextInfo); - bool remember = [matrix_.get() selectedRow] == 0; - switch (returnCode) { - case NSAlertFirstButtonReturn: { // OK - bool sessionExpire = false; - bridge->AllowSiteData(remember, sessionExpire); - break; - } - case NSAlertSecondButtonReturn: { // Cancel - bridge->BlockSiteData(remember); - break; - } - case NSRunStoppedResponse: { // Window was closed underneath us - remember = false; - bridge->BlockSiteData(remember); - break; - } - default: { - NOTREACHED(); - remember = false; - bridge->BlockSiteData(remember); - } - } -} -@end - -void CookiePromptModalDialog::CreateAndShowDialog() { - scoped_nsobject<CookiePromptModalDialogHelper> helper( - [[CookiePromptModalDialogHelper alloc] initWithBridge:this]); - NSAlert* alert = [helper alert]; - DCHECK(alert); - - NSInteger result = [alert runModal]; - [helper.get() alertDidEnd:alert returnCode:result contextInfo:this]; - - // Other than JavaScriptAppModalDialog, the cross-platform part of this class - // does not call |CompleteDialog()|, an explicit call is required. - CompleteDialog(); - Cleanup(); - delete this; -} - -// The functions below are used by the (windows-only) automation framework. -int CookiePromptModalDialog::GetDialogButtons() { - NOTIMPLEMENTED(); - return 0; -} - -void CookiePromptModalDialog::AcceptWindow() { - NOTIMPLEMENTED(); -} - -void CookiePromptModalDialog::CancelWindow() { - NOTIMPLEMENTED(); -} - -// This is only used by the app-modal dialog machinery on windows. -NativeDialog CookiePromptModalDialog::CreateNativeDialog() { - NOTIMPLEMENTED(); - return nil; -} |