Implement Clear Browser Data for Mac as an app modal dialog. Uses the profile of the given window or the default profile if run with no windows open. Add a setter to the throbber so it can be used in a nib file.
BUG=none
TEST=clear browser functionality (note that clearing passwords doesn't work) and checkbox persistance.
Review URL: http://codereview.chromium.org/112065

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17186 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index 1016bcf1..32afd0b 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -14,6 +14,7 @@
 #include "chrome/browser/browser_shutdown.h"
 #import "chrome/browser/cocoa/about_window_controller.h"
 #import "chrome/browser/cocoa/bookmark_menu_bridge.h"
+#import "chrome/browser/cocoa/clear_browsing_data_controller.h"
 #import "chrome/browser/cocoa/encoding_menu_controller_delegate_mac.h"
 #import "chrome/browser/cocoa/menu_localizer.h"
 #import "chrome/browser/cocoa/preferences_window_controller.h"
@@ -289,21 +290,28 @@
 // command is supported and doesn't check, otherwise it would have been disabled
 // in the UI in validateUserInterfaceItem:.
 - (void)commandDispatch:(id)sender {
-  Profile* default_profile = [self defaultProfile];
+  Profile* defaultProfile = [self defaultProfile];
 
   NSInteger tag = [sender tag];
   switch (tag) {
     case IDC_NEW_WINDOW:
-      Browser::OpenEmptyWindow(default_profile);
+      Browser::OpenEmptyWindow(defaultProfile);
       break;
     case IDC_NEW_INCOGNITO_WINDOW:
-      Browser::OpenURLOffTheRecord(default_profile, GURL());
+      Browser::OpenURLOffTheRecord(defaultProfile, GURL());
       break;
     case IDC_OPEN_FILE:
-      Browser::OpenEmptyWindow(default_profile);
+      Browser::OpenEmptyWindow(defaultProfile);
       BrowserList::GetLastActive()->
           ExecuteCommandWithDisposition(IDC_OPEN_FILE, CURRENT_TAB);
       break;
+    case IDC_CLEAR_BROWSING_DATA:
+      // There may not be a browser open, so use the default profile.
+      scoped_nsobject<ClearBrowsingDataController> controller(
+          [[ClearBrowsingDataController alloc]
+              initWithProfile:defaultProfile]);
+      [controller runModalDialog];
+      break;
   };
 }
 
@@ -330,6 +338,7 @@
   menuState_->UpdateCommandEnabled(IDC_NEW_WINDOW, true);
   menuState_->UpdateCommandEnabled(IDC_NEW_INCOGNITO_WINDOW, true);
   menuState_->UpdateCommandEnabled(IDC_OPEN_FILE, true);
+  menuState_->UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, true);
   // TODO(pinkerton): ...more to come...
 }