| Index: chrome/browser/ui/webui/options2/clear_browser_data_handler2.cc
|
| diff --git a/chrome/browser/ui/webui/options2/clear_browser_data_handler2.cc b/chrome/browser/ui/webui/options2/clear_browser_data_handler2.cc
|
| index 620b5678ffce629ed816891ad27958a6d65616bb..9ba13e3171ba2ddcb2c88ad22044dd1c6f399efb 100644
|
| --- a/chrome/browser/ui/webui/options2/clear_browser_data_handler2.cc
|
| +++ b/chrome/browser/ui/webui/options2/clear_browser_data_handler2.cc
|
| @@ -24,7 +24,9 @@
|
|
|
| namespace options2 {
|
|
|
| -ClearBrowserDataHandler::ClearBrowserDataHandler() : remover_(NULL) {
|
| +ClearBrowserDataHandler::ClearBrowserDataHandler()
|
| + : remover_(NULL),
|
| + remove_hosted_app_data_pending_(false) {
|
| }
|
|
|
| ClearBrowserDataHandler::~ClearBrowserDataHandler() {
|
| @@ -51,6 +53,7 @@ void ClearBrowserDataHandler::GetLocalizedValues(
|
| { "deleteCookiesFlashCheckbox", IDS_DEL_COOKIES_FLASH_CHKBOX },
|
| { "deletePasswordsCheckbox", IDS_DEL_PASSWORDS_CHKBOX },
|
| { "deleteFormDataCheckbox", IDS_DEL_FORM_DATA_CHKBOX },
|
| + { "deleteHostedAppsDataCheckbox", IDS_DEL_HOSTED_APPS_DATA_CHKBOX },
|
| { "deauthorizeContentLicensesCheckbox",
|
| IDS_DEAUTHORIZE_CONTENT_LICENSES_CHKBOX },
|
| { "clearBrowserDataCommit", IDS_CLEAR_BROWSING_DATA_COMMIT },
|
| @@ -97,6 +100,8 @@ void ClearBrowserDataHandler::RegisterMessages() {
|
| }
|
|
|
| void ClearBrowserDataHandler::HandleClearBrowserData(const ListValue* value) {
|
| + DCHECK(!remover_);
|
| +
|
| Profile* profile = Profile::FromWebUI(web_ui());
|
| PrefService* prefs = profile->GetPrefs();
|
|
|
| @@ -121,29 +126,59 @@ void ClearBrowserDataHandler::HandleClearBrowserData(const ListValue* value) {
|
| if (prefs->GetBoolean(prefs::kDeauthorizeContentLicenses))
|
| remove_mask |= BrowsingDataRemover::REMOVE_CONTENT_LICENSES;
|
|
|
| - int period_selected = prefs->GetInteger(prefs::kDeleteTimePeriod);
|
| + remove_hosted_app_data_pending_ =
|
| + prefs->GetBoolean(prefs::kDeleteHostedAppsData);
|
| +
|
| + if (!remove_mask) {
|
| + // If no unprotected data should be removed, skip straight to removing
|
| + // hosted app data. If nothing should be removed (which would mean that the
|
| + // JS-side is buggy), skip straight to cleaning up.
|
| + if (remove_hosted_app_data_pending_)
|
| + ClearHostedAppData();
|
| + else
|
| + OnAllDataRemoved();
|
| + } else {
|
| + // BrowsingDataRemover deletes itself when done.
|
| + int period_selected = prefs->GetInteger(prefs::kDeleteTimePeriod);
|
| + remover_ = new BrowsingDataRemover(profile,
|
| + static_cast<BrowsingDataRemover::TimePeriod>(period_selected),
|
| + base::Time());
|
| + remover_->AddObserver(this);
|
| + remover_->Remove(remove_mask, BrowsingDataHelper::UNPROTECTED_WEB);
|
| + }
|
| +}
|
|
|
| - base::FundamentalValue state(true);
|
| - web_ui()->CallJavascriptFunction("ClearBrowserDataOverlay.setClearingState",
|
| - state);
|
| +void ClearBrowserDataHandler::ClearHostedAppData() {
|
| + DCHECK(!remover_);
|
| + DCHECK(remove_hosted_app_data_pending_);
|
|
|
| - // If we are still observing a previous data remover, we need to stop
|
| - // observing.
|
| - if (remover_)
|
| - remover_->RemoveObserver(this);
|
| + remove_hosted_app_data_pending_ = false;
|
| + Profile* profile = Profile::FromWebUI(web_ui());
|
| + PrefService* prefs = profile->GetPrefs();
|
|
|
| + int period_selected = prefs->GetInteger(prefs::kDeleteTimePeriod);
|
| // BrowsingDataRemover deletes itself when done.
|
| - remover_ = new BrowsingDataRemover(profile,
|
| + remover_ = new BrowsingDataRemover(
|
| + profile,
|
| static_cast<BrowsingDataRemover::TimePeriod>(period_selected),
|
| base::Time());
|
| remover_->AddObserver(this);
|
| - remover_->Remove(remove_mask, BrowsingDataHelper::UNPROTECTED_WEB);
|
| + remover_->Remove(BrowsingDataRemover::REMOVE_SITE_DATA,
|
| + BrowsingDataHelper::PROTECTED_WEB);
|
| }
|
|
|
| void ClearBrowserDataHandler::OnBrowsingDataRemoverDone() {
|
| // No need to remove ourselves as an observer as BrowsingDataRemover deletes
|
| // itself after we return.
|
| remover_ = NULL;
|
| +
|
| + if (remove_hosted_app_data_pending_)
|
| + ClearHostedAppData();
|
| + else
|
| + OnAllDataRemoved();
|
| +}
|
| +
|
| +void ClearBrowserDataHandler::OnAllDataRemoved() {
|
| web_ui()->CallJavascriptFunction("ClearBrowserDataOverlay.doneClearing");
|
| }
|
|
|
|
|