| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" | 5 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/callback.h" | 11 #include "base/callback.h" |
| 12 #include "base/metrics/user_metrics.h" |
| 12 #include "chrome/browser/autofill/personal_data_manager_factory.h" | 13 #include "chrome/browser/autofill/personal_data_manager_factory.h" |
| 13 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 14 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| 14 #include "chrome/browser/browser_process.h" | 15 #include "chrome/browser/browser_process.h" |
| 15 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 16 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
| 16 #include "chrome/browser/chrome_notification_types.h" | 17 #include "chrome/browser/chrome_notification_types.h" |
| 17 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 18 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| 18 #include "chrome/browser/domain_reliability/service_factory.h" | 19 #include "chrome/browser/domain_reliability/service_factory.h" |
| 19 #include "chrome/browser/download/download_prefs.h" | 20 #include "chrome/browser/download/download_prefs.h" |
| 20 #include "chrome/browser/external_protocol/external_protocol_handler.h" | 21 #include "chrome/browser/external_protocol/external_protocol_handler.h" |
| 21 #include "chrome/browser/history/history_service_factory.h" | 22 #include "chrome/browser/history/history_service_factory.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 #include "components/prefs/pref_service.h" | 64 #include "components/prefs/pref_service.h" |
| 64 #include "components/previews/core/previews_ui_service.h" | 65 #include "components/previews/core/previews_ui_service.h" |
| 65 #include "components/search_engines/template_url_service.h" | 66 #include "components/search_engines/template_url_service.h" |
| 66 #include "components/sessions/core/tab_restore_service.h" | 67 #include "components/sessions/core/tab_restore_service.h" |
| 67 #include "components/translate/core/browser/language_model.h" | 68 #include "components/translate/core/browser/language_model.h" |
| 68 #include "components/web_cache/browser/web_cache_manager.h" | 69 #include "components/web_cache/browser/web_cache_manager.h" |
| 69 #include "content/public/browser/browsing_data_filter_builder.h" | 70 #include "content/public/browser/browsing_data_filter_builder.h" |
| 70 #include "content/public/browser/plugin_data_remover.h" | 71 #include "content/public/browser/plugin_data_remover.h" |
| 71 #include "content/public/browser/ssl_host_state_delegate.h" | 72 #include "content/public/browser/ssl_host_state_delegate.h" |
| 72 #include "content/public/browser/storage_partition.h" | 73 #include "content/public/browser/storage_partition.h" |
| 73 #include "content/public/browser/user_metrics.h" | |
| 74 #include "net/cookies/cookie_store.h" | 74 #include "net/cookies/cookie_store.h" |
| 75 #include "net/http/http_transaction_factory.h" | 75 #include "net/http/http_transaction_factory.h" |
| 76 #include "net/url_request/url_request_context.h" | 76 #include "net/url_request/url_request_context.h" |
| 77 #include "net/url_request/url_request_context_getter.h" | 77 #include "net/url_request/url_request_context_getter.h" |
| 78 #include "url/url_util.h" | 78 #include "url/url_util.h" |
| 79 | 79 |
| 80 #if defined(OS_ANDROID) | 80 #if defined(OS_ANDROID) |
| 81 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" | 81 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" |
| 82 #include "chrome/browser/android/webapps/webapp_registry.h" | 82 #include "chrome/browser/android/webapps/webapp_registry.h" |
| 83 #include "chrome/browser/precache/precache_manager_factory.h" | 83 #include "chrome/browser/precache/precache_manager_factory.h" |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 DCHECK(((remove_mask & ~FILTERABLE_DATA_TYPES) == 0) || | 344 DCHECK(((remove_mask & ~FILTERABLE_DATA_TYPES) == 0) || |
| 345 filter_builder.IsEmptyBlacklist()); | 345 filter_builder.IsEmptyBlacklist()); |
| 346 | 346 |
| 347 // Embedder-defined DOM-accessible storage currently contains only | 347 // Embedder-defined DOM-accessible storage currently contains only |
| 348 // one datatype, which is the durable storage permission. | 348 // one datatype, which is the durable storage permission. |
| 349 if (remove_mask & BrowsingDataRemover::DATA_TYPE_EMBEDDER_DOM_STORAGE) { | 349 if (remove_mask & BrowsingDataRemover::DATA_TYPE_EMBEDDER_DOM_STORAGE) { |
| 350 remove_mask |= DATA_TYPE_DURABLE_PERMISSION; | 350 remove_mask |= DATA_TYPE_DURABLE_PERMISSION; |
| 351 } | 351 } |
| 352 | 352 |
| 353 if (origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) { | 353 if (origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) { |
| 354 content::RecordAction( | 354 base::RecordAction( |
| 355 UserMetricsAction("ClearBrowsingData_MaskContainsUnprotectedWeb")); | 355 UserMetricsAction("ClearBrowsingData_MaskContainsUnprotectedWeb")); |
| 356 } | 356 } |
| 357 if (origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB) { | 357 if (origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB) { |
| 358 content::RecordAction( | 358 base::RecordAction( |
| 359 UserMetricsAction("ClearBrowsingData_MaskContainsProtectedWeb")); | 359 UserMetricsAction("ClearBrowsingData_MaskContainsProtectedWeb")); |
| 360 } | 360 } |
| 361 #if BUILDFLAG(ENABLE_EXTENSIONS) | 361 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 362 if (origin_type_mask & ORIGIN_TYPE_EXTENSION) { | 362 if (origin_type_mask & ORIGIN_TYPE_EXTENSION) { |
| 363 content::RecordAction( | 363 base::RecordAction( |
| 364 UserMetricsAction("ClearBrowsingData_MaskContainsExtension")); | 364 UserMetricsAction("ClearBrowsingData_MaskContainsExtension")); |
| 365 } | 365 } |
| 366 #endif | 366 #endif |
| 367 // If this fires, we added a new BrowsingDataHelper::OriginTypeMask without | 367 // If this fires, we added a new BrowsingDataHelper::OriginTypeMask without |
| 368 // updating the user metrics above. | 368 // updating the user metrics above. |
| 369 static_assert( | 369 static_assert( |
| 370 ALL_ORIGIN_TYPES == (BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB | | 370 ALL_ORIGIN_TYPES == (BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB | |
| 371 #if BUILDFLAG(ENABLE_EXTENSIONS) | 371 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 372 ORIGIN_TYPE_EXTENSION | | 372 ORIGIN_TYPE_EXTENSION | |
| 373 #endif | 373 #endif |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 !(remove_mask & BrowsingDataRemover::DATA_TYPE_DOWNLOADS))); | 405 !(remove_mask & BrowsingDataRemover::DATA_TYPE_DOWNLOADS))); |
| 406 | 406 |
| 407 ////////////////////////////////////////////////////////////////////////////// | 407 ////////////////////////////////////////////////////////////////////////////// |
| 408 // DATA_TYPE_HISTORY | 408 // DATA_TYPE_HISTORY |
| 409 if ((remove_mask & DATA_TYPE_HISTORY) && may_delete_history) { | 409 if ((remove_mask & DATA_TYPE_HISTORY) && may_delete_history) { |
| 410 history::HistoryService* history_service = | 410 history::HistoryService* history_service = |
| 411 HistoryServiceFactory::GetForProfile( | 411 HistoryServiceFactory::GetForProfile( |
| 412 profile_, ServiceAccessType::EXPLICIT_ACCESS); | 412 profile_, ServiceAccessType::EXPLICIT_ACCESS); |
| 413 if (history_service) { | 413 if (history_service) { |
| 414 // TODO(dmurph): Support all backends with filter (crbug.com/113621). | 414 // TODO(dmurph): Support all backends with filter (crbug.com/113621). |
| 415 content::RecordAction(UserMetricsAction("ClearBrowsingData_History")); | 415 base::RecordAction(UserMetricsAction("ClearBrowsingData_History")); |
| 416 clear_history_.Start(); | 416 clear_history_.Start(); |
| 417 history_service->ExpireLocalAndRemoteHistoryBetween( | 417 history_service->ExpireLocalAndRemoteHistoryBetween( |
| 418 WebHistoryServiceFactory::GetForProfile(profile_), std::set<GURL>(), | 418 WebHistoryServiceFactory::GetForProfile(profile_), std::set<GURL>(), |
| 419 delete_begin_, delete_end_, | 419 delete_begin_, delete_end_, |
| 420 clear_history_.GetCompletionCallback(), | 420 clear_history_.GetCompletionCallback(), |
| 421 &history_task_tracker_); | 421 &history_task_tracker_); |
| 422 } | 422 } |
| 423 | 423 |
| 424 // Currently, ContentSuggestionService instance exists only on Android. | 424 // Currently, ContentSuggestionService instance exists only on Android. |
| 425 ntp_snippets::ContentSuggestionsService* content_suggestions_service = | 425 ntp_snippets::ContentSuggestionsService* content_suggestions_service = |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 | 640 |
| 641 ////////////////////////////////////////////////////////////////////////////// | 641 ////////////////////////////////////////////////////////////////////////////// |
| 642 // DATA_TYPE_COOKIES | 642 // DATA_TYPE_COOKIES |
| 643 // We ignore the DATA_TYPE_COOKIES request if UNPROTECTED_WEB is not set, | 643 // We ignore the DATA_TYPE_COOKIES request if UNPROTECTED_WEB is not set, |
| 644 // so that callers who request DATA_TYPE_SITE_DATA with PROTECTED_WEB | 644 // so that callers who request DATA_TYPE_SITE_DATA with PROTECTED_WEB |
| 645 // don't accidentally remove the cookies that are associated with the | 645 // don't accidentally remove the cookies that are associated with the |
| 646 // UNPROTECTED_WEB origin. This is necessary because cookies are not separated | 646 // UNPROTECTED_WEB origin. This is necessary because cookies are not separated |
| 647 // between UNPROTECTED_WEB and PROTECTED_WEB. | 647 // between UNPROTECTED_WEB and PROTECTED_WEB. |
| 648 if (remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES && | 648 if (remove_mask & BrowsingDataRemover::DATA_TYPE_COOKIES && |
| 649 origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) { | 649 origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) { |
| 650 content::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies")); | 650 base::RecordAction(UserMetricsAction("ClearBrowsingData_Cookies")); |
| 651 | 651 |
| 652 // Clear the safebrowsing cookies only if time period is for "all time". It | 652 // Clear the safebrowsing cookies only if time period is for "all time". It |
| 653 // doesn't make sense to apply the time period of deleting in the last X | 653 // doesn't make sense to apply the time period of deleting in the last X |
| 654 // hours/days to the safebrowsing cookies since they aren't the result of | 654 // hours/days to the safebrowsing cookies since they aren't the result of |
| 655 // any user action. | 655 // any user action. |
| 656 if (delete_begin_ == base::Time()) { | 656 if (delete_begin_ == base::Time()) { |
| 657 safe_browsing::SafeBrowsingService* sb_service = | 657 safe_browsing::SafeBrowsingService* sb_service = |
| 658 g_browser_process->safe_browsing_service(); | 658 g_browser_process->safe_browsing_service(); |
| 659 if (sb_service) { | 659 if (sb_service) { |
| 660 scoped_refptr<net::URLRequestContextGetter> sb_context = | 660 scoped_refptr<net::URLRequestContextGetter> sb_context = |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 713 CONTENT_SETTINGS_TYPE_APP_BANNER, | 713 CONTENT_SETTINGS_TYPE_APP_BANNER, |
| 714 base::Bind(&WebsiteSettingsFilterAdapter, filter)); | 714 base::Bind(&WebsiteSettingsFilterAdapter, filter)); |
| 715 | 715 |
| 716 PermissionDecisionAutoBlocker::GetForProfile(profile_)->RemoveCountsByUrl( | 716 PermissionDecisionAutoBlocker::GetForProfile(profile_)->RemoveCountsByUrl( |
| 717 filter); | 717 filter); |
| 718 } | 718 } |
| 719 | 719 |
| 720 ////////////////////////////////////////////////////////////////////////////// | 720 ////////////////////////////////////////////////////////////////////////////// |
| 721 // Password manager | 721 // Password manager |
| 722 if (remove_mask & DATA_TYPE_PASSWORDS) { | 722 if (remove_mask & DATA_TYPE_PASSWORDS) { |
| 723 content::RecordAction(UserMetricsAction("ClearBrowsingData_Passwords")); | 723 base::RecordAction(UserMetricsAction("ClearBrowsingData_Passwords")); |
| 724 password_manager::PasswordStore* password_store = | 724 password_manager::PasswordStore* password_store = |
| 725 PasswordStoreFactory::GetForProfile( | 725 PasswordStoreFactory::GetForProfile( |
| 726 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); | 726 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); |
| 727 | 727 |
| 728 if (password_store) { | 728 if (password_store) { |
| 729 clear_passwords_.Start(); | 729 clear_passwords_.Start(); |
| 730 password_store->RemoveLoginsByURLAndTime( | 730 password_store->RemoveLoginsByURLAndTime( |
| 731 filter, delete_begin_, delete_end_, | 731 filter, delete_begin_, delete_end_, |
| 732 clear_passwords_.GetCompletionCallback()); | 732 clear_passwords_.GetCompletionCallback()); |
| 733 } | 733 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 password_store->RemoveStatisticsByOriginAndTime( | 766 password_store->RemoveStatisticsByOriginAndTime( |
| 767 nullable_filter, delete_begin_, delete_end_, | 767 nullable_filter, delete_begin_, delete_end_, |
| 768 clear_passwords_stats_.GetCompletionCallback()); | 768 clear_passwords_stats_.GetCompletionCallback()); |
| 769 } | 769 } |
| 770 } | 770 } |
| 771 | 771 |
| 772 ////////////////////////////////////////////////////////////////////////////// | 772 ////////////////////////////////////////////////////////////////////////////// |
| 773 // DATA_TYPE_FORM_DATA | 773 // DATA_TYPE_FORM_DATA |
| 774 // TODO(dmurph): Support all backends with filter (crbug.com/113621). | 774 // TODO(dmurph): Support all backends with filter (crbug.com/113621). |
| 775 if (remove_mask & DATA_TYPE_FORM_DATA) { | 775 if (remove_mask & DATA_TYPE_FORM_DATA) { |
| 776 content::RecordAction(UserMetricsAction("ClearBrowsingData_Autofill")); | 776 base::RecordAction(UserMetricsAction("ClearBrowsingData_Autofill")); |
| 777 scoped_refptr<autofill::AutofillWebDataService> web_data_service = | 777 scoped_refptr<autofill::AutofillWebDataService> web_data_service = |
| 778 WebDataServiceFactory::GetAutofillWebDataForProfile( | 778 WebDataServiceFactory::GetAutofillWebDataForProfile( |
| 779 profile_, ServiceAccessType::EXPLICIT_ACCESS); | 779 profile_, ServiceAccessType::EXPLICIT_ACCESS); |
| 780 | 780 |
| 781 if (web_data_service.get()) { | 781 if (web_data_service.get()) { |
| 782 clear_form_.Start(); | 782 clear_form_.Start(); |
| 783 web_data_service->RemoveFormElementsAddedBetween(delete_begin_, | 783 web_data_service->RemoveFormElementsAddedBetween(delete_begin_, |
| 784 delete_end_); | 784 delete_end_); |
| 785 web_data_service->RemoveAutofillDataModifiedBetween( | 785 web_data_service->RemoveAutofillDataModifiedBetween( |
| 786 delete_begin_, delete_end_); | 786 delete_begin_, delete_end_); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 // on //chrome. | 882 // on //chrome. |
| 883 // TODO(msramek): Investigate these dependencies and move the plugin deletion | 883 // TODO(msramek): Investigate these dependencies and move the plugin deletion |
| 884 // to BrowsingDataRemoverImpl in //content. Note that code in //content | 884 // to BrowsingDataRemoverImpl in //content. Note that code in //content |
| 885 // can simply take advantage of PluginDataRemover directly to delete plugin | 885 // can simply take advantage of PluginDataRemover directly to delete plugin |
| 886 // data in bulk. | 886 // data in bulk. |
| 887 #if BUILDFLAG(ENABLE_PLUGINS) | 887 #if BUILDFLAG(ENABLE_PLUGINS) |
| 888 // Plugin is data not separated for protected and unprotected web origins. We | 888 // Plugin is data not separated for protected and unprotected web origins. We |
| 889 // check the origin_type_mask_ to prevent unintended deletion. | 889 // check the origin_type_mask_ to prevent unintended deletion. |
| 890 if (remove_mask & DATA_TYPE_PLUGIN_DATA && | 890 if (remove_mask & DATA_TYPE_PLUGIN_DATA && |
| 891 origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) { | 891 origin_type_mask & BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB) { |
| 892 content::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData")); | 892 base::RecordAction(UserMetricsAction("ClearBrowsingData_LSOData")); |
| 893 clear_plugin_data_count_ = 1; | 893 clear_plugin_data_count_ = 1; |
| 894 | 894 |
| 895 if (filter_builder.IsEmptyBlacklist()) { | 895 if (filter_builder.IsEmptyBlacklist()) { |
| 896 DCHECK(!plugin_data_remover_); | 896 DCHECK(!plugin_data_remover_); |
| 897 plugin_data_remover_.reset( | 897 plugin_data_remover_.reset( |
| 898 content::PluginDataRemover::Create(profile_)); | 898 content::PluginDataRemover::Create(profile_)); |
| 899 base::WaitableEvent* event = | 899 base::WaitableEvent* event = |
| 900 plugin_data_remover_->StartRemoving(delete_begin_); | 900 plugin_data_remover_->StartRemoving(delete_begin_); |
| 901 | 901 |
| 902 base::WaitableEventWatcher::EventCallback watcher_callback = base::Bind( | 902 base::WaitableEventWatcher::EventCallback watcher_callback = base::Bind( |
| 903 &ChromeBrowsingDataRemoverDelegate::OnWaitableEventSignaled, | 903 &ChromeBrowsingDataRemoverDelegate::OnWaitableEventSignaled, |
| 904 weak_ptr_factory_.GetWeakPtr()); | 904 weak_ptr_factory_.GetWeakPtr()); |
| 905 watcher_.StartWatching(event, watcher_callback); | 905 watcher_.StartWatching(event, watcher_callback); |
| 906 } else { | 906 } else { |
| 907 // TODO(msramek): Store filters from the currently executed task on the | 907 // TODO(msramek): Store filters from the currently executed task on the |
| 908 // object to avoid having to copy them to callback methods. | 908 // object to avoid having to copy them to callback methods. |
| 909 flash_lso_helper_->StartFetching(base::Bind( | 909 flash_lso_helper_->StartFetching(base::Bind( |
| 910 &ChromeBrowsingDataRemoverDelegate::OnSitesWithFlashDataFetched, | 910 &ChromeBrowsingDataRemoverDelegate::OnSitesWithFlashDataFetched, |
| 911 weak_ptr_factory_.GetWeakPtr(), | 911 weak_ptr_factory_.GetWeakPtr(), |
| 912 filter_builder.BuildPluginFilter())); | 912 filter_builder.BuildPluginFilter())); |
| 913 } | 913 } |
| 914 } | 914 } |
| 915 #endif | 915 #endif |
| 916 | 916 |
| 917 ////////////////////////////////////////////////////////////////////////////// | 917 ////////////////////////////////////////////////////////////////////////////// |
| 918 // DATA_TYPE_MEDIA_LICENSES | 918 // DATA_TYPE_MEDIA_LICENSES |
| 919 if (remove_mask & BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES) { | 919 if (remove_mask & BrowsingDataRemover::DATA_TYPE_MEDIA_LICENSES) { |
| 920 // TODO(jrummell): This UMA should be renamed to indicate it is for Media | 920 // TODO(jrummell): This UMA should be renamed to indicate it is for Media |
| 921 // Licenses. | 921 // Licenses. |
| 922 content::RecordAction( | 922 base::RecordAction(UserMetricsAction("ClearBrowsingData_ContentLicenses")); |
| 923 UserMetricsAction("ClearBrowsingData_ContentLicenses")); | |
| 924 | 923 |
| 925 #if BUILDFLAG(ENABLE_PLUGINS) | 924 #if BUILDFLAG(ENABLE_PLUGINS) |
| 926 clear_flash_content_licenses_.Start(); | 925 clear_flash_content_licenses_.Start(); |
| 927 if (!pepper_flash_settings_manager_.get()) { | 926 if (!pepper_flash_settings_manager_.get()) { |
| 928 pepper_flash_settings_manager_.reset( | 927 pepper_flash_settings_manager_.reset( |
| 929 new PepperFlashSettingsManager(this, profile_)); | 928 new PepperFlashSettingsManager(this, profile_)); |
| 930 } | 929 } |
| 931 deauthorize_flash_content_licenses_request_id_ = | 930 deauthorize_flash_content_licenses_request_id_ = |
| 932 pepper_flash_settings_manager_->DeauthorizeContentLicenses(prefs); | 931 pepper_flash_settings_manager_->DeauthorizeContentLicenses(prefs); |
| 933 #endif // BUILDFLAG(ENABLE_PLUGINS) | 932 #endif // BUILDFLAG(ENABLE_PLUGINS) |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1123 } | 1122 } |
| 1124 | 1123 |
| 1125 void ChromeBrowsingDataRemoverDelegate:: | 1124 void ChromeBrowsingDataRemoverDelegate:: |
| 1126 OnDeauthorizeFlashContentLicensesCompleted( | 1125 OnDeauthorizeFlashContentLicensesCompleted( |
| 1127 uint32_t request_id, | 1126 uint32_t request_id, |
| 1128 bool /* success */) { | 1127 bool /* success */) { |
| 1129 DCHECK_EQ(request_id, deauthorize_flash_content_licenses_request_id_); | 1128 DCHECK_EQ(request_id, deauthorize_flash_content_licenses_request_id_); |
| 1130 clear_flash_content_licenses_.GetCompletionCallback().Run(); | 1129 clear_flash_content_licenses_.GetCompletionCallback().Run(); |
| 1131 } | 1130 } |
| 1132 #endif | 1131 #endif |
| OLD | NEW |