| Index: chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc
|
| diff --git a/chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc b/chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc
|
| index baeb4bd5732f9f63da2cd58714cecc98c59588f5..a71ca51dea2c12551fdef5eeb99b643bf8ff8fb2 100644
|
| --- a/chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc
|
| +++ b/chrome/browser/browsing_data/browsing_data_flash_lso_helper.cc
|
| @@ -25,7 +25,8 @@ class BrowsingDataFlashLSOHelperImpl
|
|
|
| // BrowsingDataFlashLSOHelper implementation:
|
| void StartFetching(const GetSitesWithFlashDataCallback& callback) override;
|
| - void DeleteFlashLSOsForSite(const std::string& site) override;
|
| + void DeleteFlashLSOsForSite(const std::string& site,
|
| + const base::Closure& callback) override;
|
|
|
| // PepperFlashSettingsManager::Client overrides:
|
| void OnGetSitesWithDataCompleted(
|
| @@ -34,6 +35,15 @@ class BrowsingDataFlashLSOHelperImpl
|
| void OnClearSiteDataCompleted(uint32_t request_id, bool success) override;
|
|
|
| private:
|
| + struct DeleteFlashLSOTask {
|
| + DeleteFlashLSOTask() {}
|
| + DeleteFlashLSOTask(const std::string& site, const base::Closure& callback)
|
| + : site(site), callback(callback) {}
|
| +
|
| + std::string site;
|
| + base::Closure callback;
|
| + };
|
| +
|
| ~BrowsingDataFlashLSOHelperImpl() override;
|
|
|
| // Asynchronously fetches and deletes data and calls us back.
|
| @@ -43,8 +53,9 @@ class BrowsingDataFlashLSOHelperImpl
|
| uint32_t get_sites_with_data_request_id_;
|
|
|
| // Contains the pending requests to clear site data. The key is the request
|
| - // ID, the value the site for which to clear data.
|
| - std::map<uint32_t, std::string> clear_site_data_ids_;
|
| + // ID, the value is the site for which to clear data and the callback to be
|
| + // called upon completion.
|
| + std::map<uint32_t, DeleteFlashLSOTask> clear_site_data_ids_;
|
|
|
| // Called when we have fetched the list of sites.
|
| GetSitesWithFlashDataCallback callback_;
|
| @@ -69,11 +80,11 @@ void BrowsingDataFlashLSOHelperImpl::StartFetching(
|
| }
|
|
|
| void BrowsingDataFlashLSOHelperImpl::DeleteFlashLSOsForSite(
|
| - const std::string& site) {
|
| + const std::string& site, const base::Closure& callback) {
|
| const uint64_t kClearAllData = 0;
|
| uint32_t id = settings_manager_.ClearSiteData(
|
| site, kClearAllData, std::numeric_limits<uint64_t>::max());
|
| - clear_site_data_ids_[id] = site;
|
| + clear_site_data_ids_[id] = DeleteFlashLSOTask(site, callback);
|
| }
|
|
|
| void BrowsingDataFlashLSOHelperImpl::OnGetSitesWithDataCompleted(
|
| @@ -87,11 +98,13 @@ void BrowsingDataFlashLSOHelperImpl::OnGetSitesWithDataCompleted(
|
| void BrowsingDataFlashLSOHelperImpl::OnClearSiteDataCompleted(
|
| uint32_t request_id,
|
| bool success) {
|
| - std::map<uint32_t, std::string>::iterator entry =
|
| + std::map<uint32_t, DeleteFlashLSOTask>::iterator entry =
|
| clear_site_data_ids_.find(request_id);
|
| DCHECK(entry != clear_site_data_ids_.end());
|
| LOG_IF(ERROR, !success) << "Couldn't clear Flash LSO data for "
|
| - << entry->second;
|
| + << entry->second.site;
|
| + if (!entry->second.callback.is_null())
|
| + entry->second.callback.Run();
|
| clear_site_data_ids_.erase(entry);
|
| }
|
|
|
|
|