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

Unified Diff: chrome/browser/shell_integration_win.cc

Issue 2888693003: Remove the usage of BrowserThread::FILE in the shell_integration* files (Closed)
Patch Set: Added a comment and fix typo Created 3 years, 7 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
« no previous file with comments | « chrome/browser/shell_integration_linux.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/shell_integration_win.cc
diff --git a/chrome/browser/shell_integration_win.cc b/chrome/browser/shell_integration_win.cc
index 06dbc42d025ac612636b61e19ce233ebdeec3f5f..c8fc1ac86bd11b43b26bea15402ef5ec15fdea61 100644
--- a/chrome/browser/shell_integration_win.cc
+++ b/chrome/browser/shell_integration_win.cc
@@ -32,6 +32,7 @@
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/task_scheduler/post_task.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "base/win/registry.h"
@@ -54,12 +55,9 @@
#include "chrome/installer/util/scoped_user_protocol_entry.h"
#include "chrome/installer/util/shell_util.h"
#include "components/variations/variations_associated_data.h"
-#include "content/public/browser/browser_thread.h"
#include "content/public/browser/utility_process_mojo_client.h"
#include "ui/base/l10n/l10n_util.h"
-using content::BrowserThread;
-
namespace shell_integration {
namespace {
@@ -150,8 +148,7 @@ base::string16 GetExpectedAppId(const base::CommandLine& command_line,
}
void MigrateTaskbarPinsCallback() {
- // This should run on the file thread.
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
+ base::ThreadRestrictions::AssertIOAllowed();
// Get full path of chrome.
base::FilePath chrome_exe;
@@ -328,7 +325,7 @@ class OpenSystemSettingsHelper {
// watched. The array must contain at least one element.
static void Begin(const wchar_t* const protocols[],
const base::Closure& on_finished_callback) {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
+ base::ThreadRestrictions::AssertIOAllowed();
delete instance_;
instance_ = new OpenSystemSettingsHelper(protocols, on_finished_callback);
@@ -364,13 +361,16 @@ class OpenSystemSettingsHelper {
weak_ptr_factory_.GetWeakPtr(), ConcludeReason::TIMEOUT));
}
+ ~OpenSystemSettingsHelper() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ }
+
// Called when a change is detected on one of the registry keys being watched.
// Note: All types of modification to the registry key will trigger this
// function even if the value change is the only one that matters. This
// is good enough for now.
void OnRegistryKeyChanged() {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
-
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Make sure all the registry watchers have fired.
if (--registry_watcher_count_ == 0) {
UMA_HISTOGRAM_MEDIUM_TIMES(
@@ -385,7 +385,7 @@ class OpenSystemSettingsHelper {
// |on_finished_callback_| and then dispose of this class instance to make
// sure the callback won't get called subsequently.
void ConcludeInteraction(ConcludeReason conclude_reason) {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
UMA_HISTOGRAM_ENUMERATION(
"DefaultBrowser.SettingsInteraction.ConcludeReason", conclude_reason,
@@ -398,6 +398,8 @@ class OpenSystemSettingsHelper {
// Helper function to create a registry watcher for a given |key_path|. Do
// nothing on initialization failure.
void AddRegistryKeyWatcher(const wchar_t* key_path) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
auto reg_key = base::MakeUnique<base::win::RegKey>(HKEY_CURRENT_USER,
key_path, KEY_NOTIFY);
@@ -433,6 +435,8 @@ class OpenSystemSettingsHelper {
// Records the time it takes for the final registry watcher to get signaled.
base::TimeTicks start_time_;
+ SEQUENCE_CHECKER(sequence_checker_);
+
// Weak ptrs are used to bind this class to the callbacks of the timer and the
// registry watcher. This makes it possible to self-delete after one of the
// callbacks is executed to cancel the remaining ones.
@@ -464,6 +468,8 @@ class IsPinnedToTaskbarHelper {
ErrorCallback error_callback_;
ResultCallback result_callback_;
+ SEQUENCE_CHECKER(sequence_checker_);
+
DISALLOW_COPY_AND_ASSIGN(IsPinnedToTaskbarHelper);
};
@@ -497,6 +503,8 @@ IsPinnedToTaskbarHelper::IsPinnedToTaskbarHelper(
}
void IsPinnedToTaskbarHelper::OnConnectionError() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
error_callback_.Run();
delete this;
}
@@ -504,6 +512,8 @@ void IsPinnedToTaskbarHelper::OnConnectionError() {
void IsPinnedToTaskbarHelper::OnIsPinnedToTaskbarResult(
bool succeeded,
bool is_pinned_to_taskbar) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
result_callback_.Run(succeeded, is_pinned_to_taskbar);
delete this;
}
@@ -511,6 +521,8 @@ void IsPinnedToTaskbarHelper::OnIsPinnedToTaskbarResult(
} // namespace
bool SetAsDefaultBrowser() {
+ base::ThreadRestrictions::AssertIOAllowed();
+
base::FilePath chrome_exe;
if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
LOG(ERROR) << "Error getting app exe path";
@@ -530,6 +542,8 @@ bool SetAsDefaultBrowser() {
}
bool SetAsDefaultProtocolClient(const std::string& protocol) {
+ base::ThreadRestrictions::AssertIOAllowed();
+
if (protocol.empty())
return false;
@@ -625,6 +639,8 @@ DefaultWebClientState IsDefaultProtocolClient(const std::string& protocol) {
namespace win {
bool SetAsDefaultBrowserUsingIntentPicker() {
+ base::ThreadRestrictions::AssertIOAllowed();
+
base::FilePath chrome_exe;
if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
NOTREACHED() << "Error getting app exe path";
@@ -643,7 +659,7 @@ bool SetAsDefaultBrowserUsingIntentPicker() {
void SetAsDefaultBrowserUsingSystemSettings(
const base::Closure& on_finished_callback) {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
+ base::ThreadRestrictions::AssertIOAllowed();
base::FilePath chrome_exe;
if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
@@ -670,6 +686,8 @@ void SetAsDefaultBrowserUsingSystemSettings(
}
bool SetAsDefaultProtocolClientUsingIntentPicker(const std::string& protocol) {
+ base::ThreadRestrictions::AssertIOAllowed();
+
base::FilePath chrome_exe;
if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
NOTREACHED() << "Error getting app exe path";
@@ -691,7 +709,7 @@ bool SetAsDefaultProtocolClientUsingIntentPicker(const std::string& protocol) {
void SetAsDefaultProtocolClientUsingSystemSettings(
const std::string& protocol,
const base::Closure& on_finished_callback) {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
+ base::ThreadRestrictions::AssertIOAllowed();
base::FilePath chrome_exe;
if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
@@ -731,14 +749,12 @@ void MigrateTaskbarPins() {
if (base::win::GetVersion() < base::win::VERSION_WIN7)
return;
- // This needs to happen eventually (e.g. so that the appid is fixed and the
- // run-time Chrome icon is merged with the taskbar shortcut), but this is not
- // urgent and shouldn't delay Chrome startup.
- static const int64_t kMigrateTaskbarPinsDelaySeconds = 15;
- BrowserThread::PostDelayedTask(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&MigrateTaskbarPinsCallback),
- base::TimeDelta::FromSeconds(kMigrateTaskbarPinsDelaySeconds));
+ // This needs to happen (e.g. so that the appid is fixed and the
+ // run-time Chrome icon is merged with the taskbar shortcut), but it is not an
+ // urgent task.
+ base::PostTaskWithTraits(FROM_HERE,
+ {base::MayBlock(), base::TaskPriority::BACKGROUND},
+ base::Bind(&MigrateTaskbarPinsCallback));
}
void GetIsPinnedToTaskbarState(
« no previous file with comments | « chrome/browser/shell_integration_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698