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

Unified Diff: chrome/browser/ui/cocoa/clear_browsing_data_controller.mm

Issue 6621076: [Mac] Remove native/Cocoa preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase switch removal Created 9 years, 9 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
Index: chrome/browser/ui/cocoa/clear_browsing_data_controller.mm
diff --git a/chrome/browser/ui/cocoa/clear_browsing_data_controller.mm b/chrome/browser/ui/cocoa/clear_browsing_data_controller.mm
deleted file mode 100644
index ae57e265b6e72d7fd5f076b7bf7ab9811f895f46..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/cocoa/clear_browsing_data_controller.mm
+++ /dev/null
@@ -1,266 +0,0 @@
-// Copyright (c) 2011 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/ui/cocoa/clear_browsing_data_controller.h"
-
-#include "base/lazy_instance.h"
-#include "base/mac/mac_util.h"
-#include "base/scoped_nsobject.h"
-#include "chrome/browser/browsing_data_remover.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/common/pref_names.h"
-#include "grit/locale_settings.h"
-#import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h"
-#include "ui/base/l10n/l10n_util.h"
-
-NSString* const kClearBrowsingDataControllerDidDelete =
- @"kClearBrowsingDataControllerDidDelete";
-NSString* const kClearBrowsingDataControllerRemoveMask =
- @"kClearBrowsingDataControllerRemoveMask";
-
-@interface ClearBrowsingDataController(Private)
-- (void)initFromPrefs;
-- (void)persistToPrefs;
-- (void)dataRemoverDidFinish;
-@end
-
-class ClearBrowsingObserver : public BrowsingDataRemover::Observer {
- public:
- ClearBrowsingObserver(ClearBrowsingDataController* controller)
- : controller_(controller) { }
- void OnBrowsingDataRemoverDone() { [controller_ dataRemoverDidFinish]; }
- private:
- ClearBrowsingDataController* controller_;
-};
-
-namespace {
-
-typedef std::map<Profile*, ClearBrowsingDataController*> ProfileControllerMap;
-
-static base::LazyInstance<ProfileControllerMap> g_profile_controller_map(
- base::LINKER_INITIALIZED);
-
-} // namespace
-
-@implementation ClearBrowsingDataController
-
-@synthesize clearBrowsingHistory = clearBrowsingHistory_;
-@synthesize clearDownloadHistory = clearDownloadHistory_;
-@synthesize emptyCache = emptyCache_;
-@synthesize deleteCookies = deleteCookies_;
-@synthesize clearSavedPasswords = clearSavedPasswords_;
-@synthesize clearFormData = clearFormData_;
-@synthesize timePeriod = timePeriod_;
-@synthesize isClearing = isClearing_;
-
-+ (void)showClearBrowsingDialogForProfile:(Profile*)profile {
- ClearBrowsingDataController* controller =
- [ClearBrowsingDataController controllerForProfile:profile];
- if (![controller isWindowLoaded]) {
- // This function needs to return instead of blocking, to match the windows
- // api call. It caused problems when launching the dialog from the
- // WebUI history page. See bug and code review for more details.
- // http://crbug.com/37976
- [controller performSelector:@selector(runModalDialog)
- withObject:nil
- afterDelay:0];
- }
-}
-
-+ (ClearBrowsingDataController *)controllerForProfile:(Profile*)profile {
- // Get the original profile in case we get here from an incognito window
- // |GetOriginalProfile()| will return the same profile if it is the original
- // profile.
- profile = profile->GetOriginalProfile();
-
- ProfileControllerMap* map = g_profile_controller_map.Pointer();
- DCHECK(map != NULL);
- ProfileControllerMap::iterator it = map->find(profile);
- if (it == map->end()) {
- // Since we don't currently support multiple profiles, this class
- // has not been tested against this case.
- if (!map->empty())
- return nil;
-
- ClearBrowsingDataController* controller =
- [[self alloc] initWithProfile:profile];
- it = map->insert(std::make_pair(profile, controller)).first;
- }
- return it->second;
-}
-
-- (id)initWithProfile:(Profile*)profile {
- DCHECK(profile);
- // Use initWithWindowNibPath:: instead of initWithWindowNibName: so we
- // can override it in a unit test.
- NSString *nibpath = [base::mac::MainAppBundle()
- pathForResource:@"ClearBrowsingData"
- ofType:@"nib"];
- if ((self = [super initWithWindowNibPath:nibpath owner:self])) {
- profile_ = profile;
- observer_.reset(new ClearBrowsingObserver(self));
- [self initFromPrefs];
- }
- return self;
-}
-
-- (void)dealloc {
- if (remover_) {
- // We were destroyed while clearing history was in progress. This can only
- // occur during automated tests (normally the user can't close the dialog
- // while clearing is in progress as the dialog is modal and not closeable).
- remover_->RemoveObserver(observer_.get());
- }
-
- [super dealloc];
-}
-
-// Run application modal.
-- (void)runModalDialog {
- // Check again to make sure there is only one window. Since we use
- // |performSelector:afterDelay:| it is possible for this to somehow be
- // triggered twice.
- DCHECK([NSThread isMainThread]);
- if (![self isWindowLoaded]) {
- // The Window size in the nib is a min size, loop over the views collecting
- // the max they grew by, that is how much the window needs to be widened by.
- CGFloat maxWidthGrowth = 0.0;
- NSWindow* window = [self window];
- NSView* contentView = [window contentView];
- Class widthBasedTweakerClass = [GTMWidthBasedTweaker class];
- for (id subView in [contentView subviews]) {
- if ([subView isKindOfClass:widthBasedTweakerClass]) {
- GTMWidthBasedTweaker* tweaker = subView;
- CGFloat delta = [tweaker changedWidth];
- maxWidthGrowth = std::max(maxWidthGrowth, delta);
- }
- }
- if (maxWidthGrowth > 0.0) {
- NSRect rect = [contentView convertRect:[window frame] fromView:nil];
- rect.size.width += maxWidthGrowth;
- rect = [contentView convertRect:rect toView:nil];
- [window setFrame:rect display:NO];
- // For some reason the content view is resizing, but some times not
- // adjusting its origin, so correct it manually.
- [contentView setFrameOrigin:NSZeroPoint];
- }
- // Now start the modal loop.
- [NSApp runModalForWindow:window];
- }
-}
-
-- (int)removeMask {
- int removeMask = 0L;
- if (clearBrowsingHistory_)
- removeMask |= BrowsingDataRemover::REMOVE_HISTORY;
- if (clearDownloadHistory_)
- removeMask |= BrowsingDataRemover::REMOVE_DOWNLOADS;
- if (emptyCache_)
- removeMask |= BrowsingDataRemover::REMOVE_CACHE;
- if (deleteCookies_)
- removeMask |= BrowsingDataRemover::REMOVE_COOKIES;
- if (clearSavedPasswords_)
- removeMask |= BrowsingDataRemover::REMOVE_PASSWORDS;
- if (clearFormData_)
- removeMask |= BrowsingDataRemover::REMOVE_FORM_DATA;
- return removeMask;
-}
-
-// Called when the user clicks the "clear" button. Do the work and persist
-// the prefs for next time. We don't stop the modal session until we get
-// the callback from the BrowsingDataRemover so the window stays on the screen.
-// While we're working, dim the buttons so the user can't click them.
-- (IBAction)clearData:(id)sender {
- // Set that we're working so that the buttons disable.
- [self setIsClearing:YES];
-
- [self persistToPrefs];
-
- // BrowsingDataRemover deletes itself when done.
- remover_ = new BrowsingDataRemover(profile_,
- static_cast<BrowsingDataRemover::TimePeriod>(timePeriod_),
- base::Time());
- remover_->AddObserver(observer_.get());
- remover_->Remove([self removeMask]);
-}
-
-// Called when the user clicks the cancel button. All we need to do is stop
-// the modal session.
-- (IBAction)cancel:(id)sender {
- [self closeDialog];
-}
-
-// Called when the user clicks the "Flash Player storage settings" button.
-- (IBAction)openFlashPlayerSettings:(id)sender {
- // The "Clear Data" dialog is app-modal on OS X. Hence, close it before
- // opening a tab with flash settings.
- [self closeDialog];
-
- Browser* browser = Browser::Create(profile_);
- browser->OpenURL(GURL(l10n_util::GetStringUTF8(IDS_FLASH_STORAGE_URL)),
- GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK);
- browser->window()->Show();
-}
-
-- (void)closeDialog {
- ProfileControllerMap* map = g_profile_controller_map.Pointer();
- ProfileControllerMap::iterator it = map->find(profile_);
- if (it != map->end()) {
- map->erase(it);
- }
- [self autorelease];
- [[self window] orderOut:self];
- [NSApp stopModal];
-}
-
-// Initialize the bools from prefs using the setters to be KVO-compliant.
-- (void)initFromPrefs {
- PrefService* prefs = profile_->GetPrefs();
- [self setClearBrowsingHistory:
- prefs->GetBoolean(prefs::kDeleteBrowsingHistory)];
- [self setClearDownloadHistory:
- prefs->GetBoolean(prefs::kDeleteDownloadHistory)];
- [self setEmptyCache:prefs->GetBoolean(prefs::kDeleteCache)];
- [self setDeleteCookies:prefs->GetBoolean(prefs::kDeleteCookies)];
- [self setClearSavedPasswords:prefs->GetBoolean(prefs::kDeletePasswords)];
- [self setClearFormData:prefs->GetBoolean(prefs::kDeleteFormData)];
- [self setTimePeriod:prefs->GetInteger(prefs::kDeleteTimePeriod)];
-}
-
-// Save the checkbox values to the preferences.
-- (void)persistToPrefs {
- PrefService* prefs = profile_->GetPrefs();
- prefs->SetBoolean(prefs::kDeleteBrowsingHistory,
- [self clearBrowsingHistory]);
- prefs->SetBoolean(prefs::kDeleteDownloadHistory,
- [self clearDownloadHistory]);
- prefs->SetBoolean(prefs::kDeleteCache, [self emptyCache]);
- prefs->SetBoolean(prefs::kDeleteCookies, [self deleteCookies]);
- prefs->SetBoolean(prefs::kDeletePasswords, [self clearSavedPasswords]);
- prefs->SetBoolean(prefs::kDeleteFormData, [self clearFormData]);
- prefs->SetInteger(prefs::kDeleteTimePeriod, [self timePeriod]);
-}
-
-// Called when the data remover object is done with its work. Close the window.
-// The remover will delete itself. End the modal session at this point.
-- (void)dataRemoverDidFinish {
- NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
- int removeMask = [self removeMask];
- NSDictionary* userInfo =
- [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:removeMask]
- forKey:kClearBrowsingDataControllerRemoveMask];
- [center postNotificationName:kClearBrowsingDataControllerDidDelete
- object:self
- userInfo:userInfo];
-
- [self closeDialog];
- [[self window] orderOut:self];
- [self setIsClearing:NO];
- remover_ = NULL;
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698