summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/cocoa/clear_browsing_data_controller.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/cocoa/clear_browsing_data_controller.h')
-rw-r--r--chrome/browser/ui/cocoa/clear_browsing_data_controller.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/clear_browsing_data_controller.h b/chrome/browser/ui/cocoa/clear_browsing_data_controller.h
new file mode 100644
index 0000000..776841d
--- /dev/null
+++ b/chrome/browser/ui/cocoa/clear_browsing_data_controller.h
@@ -0,0 +1,87 @@
+// 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.
+
+#ifndef CHROME_BROWSER_UI_COCOA_CLEAR_BROWSING_DATA_CONTROLLER_
+#define CHROME_BROWSER_UI_COCOA_CLEAR_BROWSING_DATA_CONTROLLER_
+#pragma once
+
+#import <Cocoa/Cocoa.h>
+
+#include "base/scoped_ptr.h"
+
+class BrowsingDataRemover;
+class ClearBrowsingObserver;
+class Profile;
+@class ThrobberView;
+
+// Name of notification that is called when data is cleared.
+extern NSString* const kClearBrowsingDataControllerDidDelete;
+// A key in the above notification's userInfo. Contains a NSNumber with the
+// logically-ored constants defined in BrowsingDataRemover for the removal.
+extern NSString* const kClearBrowsingDataControllerRemoveMask;
+
+// A window controller for managing the "Clear Browsing Data" feature. Modally
+// presents a dialog offering the user a set of choices of what browsing data
+// to delete and does so if the user chooses.
+
+@interface ClearBrowsingDataController : NSWindowController {
+ @private
+ Profile* profile_; // Weak, owned by browser.
+ // If non-null means there is a removal in progress. Member used mainly for
+ // automated tests. The remove deletes itself when it's done, so this is a
+ // weak reference.
+ BrowsingDataRemover* remover_;
+ scoped_ptr<ClearBrowsingObserver> observer_;
+ BOOL isClearing_; // YES while clearing data is ongoing.
+
+ // Values for checkboxes, kept in sync with bindings. These values get
+ // persisted into prefs if the user accepts the dialog.
+ BOOL clearBrowsingHistory_;
+ BOOL clearDownloadHistory_;
+ BOOL emptyCache_;
+ BOOL deleteCookies_;
+ BOOL clearSavedPasswords_;
+ BOOL clearFormData_;
+ NSInteger timePeriod_;
+}
+
+// Show the clear browsing data window. Do not use |-initWithProfile:|,
+// go through this instead so we don't end up with multiple instances.
+// This function does not block, so it can be used from DOMUI calls.
++ (void)showClearBrowsingDialogForProfile:(Profile*)profile;
++ (ClearBrowsingDataController*)controllerForProfile:(Profile*)profile;
+
+// Run the dialog with an application-modal event loop. If the user accepts,
+// performs the deletion of the selected browsing data. The values of the
+// checkboxes will be persisted into prefs for next time.
+- (void)runModalDialog;
+
+// IBActions for the dialog buttons
+- (IBAction)clearData:(id)sender;
+- (IBAction)cancel:(id)sender;
+- (IBAction)openFlashPlayerSettings:(id)sender;
+
+// Properties for bindings
+@property (nonatomic) BOOL clearBrowsingHistory;
+@property (nonatomic) BOOL clearDownloadHistory;
+@property (nonatomic) BOOL emptyCache;
+@property (nonatomic) BOOL deleteCookies;
+@property (nonatomic) BOOL clearSavedPasswords;
+@property (nonatomic) BOOL clearFormData;
+@property (nonatomic) NSInteger timePeriod;
+@property (nonatomic) BOOL isClearing;
+
+@end
+
+
+@interface ClearBrowsingDataController (ExposedForUnitTests)
+// Create the controller with the given profile (which must not be NULL).
+- (id)initWithProfile:(Profile*)profile;
+@property (readonly) int removeMask;
+- (void)persistToPrefs;
+- (void)closeDialog;
+- (void)dataRemoverDidFinish;
+@end
+
+#endif // CHROME_BROWSER_UI_COCOA_CLEAR_BROWSING_DATA_CONTROLLER_