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

Unified Diff: chrome/browser/enumerate_modules_model_win.h

Issue 6098004: Integrate about:conflicts with --diagnostics... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 12 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/enumerate_modules_model_win.h
===================================================================
--- chrome/browser/enumerate_modules_model_win.h (revision 70409)
+++ chrome/browser/enumerate_modules_model_win.h (working copy)
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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.
@@ -119,11 +119,15 @@
~ModuleEnumerator();
// Start scanning the loaded module list (if a scan is not already in
- // progress). This function does not block while reading the module list, but
- // will notify when done through the MODULE_LIST_ENUMERATED notification.
+ // progress). This function does not block while reading the module list
+ // (unless we are in limited_mode, see below), and will notify when done
+ // through the MODULE_LIST_ENUMERATED notification.
// The process will also send MODULE_INCOMPATIBILITY_DETECTED if an
// incompatible module was detected.
- void ScanNow(ModulesVector* list);
+ // When in |limited_mode|, this function will not leverage the File thread
+ // to run asynchronously and will therefore block until scanning is done
+ // (and will also not send out any notifications).
+ void ScanNow(ModulesVector* list, bool limited_mode);
private:
FRIEND_TEST_ALL_PREFIXES(EnumerateModulesTest, CollapsePath);
@@ -131,13 +135,14 @@
// The (currently) hard coded blacklist of known bad modules.
static const BlacklistEntry kModuleBlacklist[];
- // This function does the actual file scanning work on the FILE thread. It
- // enumerates all loaded modules in the process and other modules of
- // interest, such as the registered Winsock LSP modules and stores them in
- // |enumerated_modules_|. It then normalizes the module info and matches
- // them against a blacklist of known bad modules. Finally, it calls
- // ReportBack to let the observer know we are done.
- void ScanOnFileThread();
+ // This function does the actual file scanning work on the FILE thread (or
+ // block the main thread when in limited_mode). It enumerates all loaded
+ // modules in the process and other modules of interest, such as the
+ // registered Winsock LSP modules and stores them in |enumerated_modules_|.
+ // It then normalizes the module info and matches them against a blacklist
+ // of known bad modules. Finally, it calls ReportBack to let the observer
+ // know we are done.
+ void ScanImpl();
// Enumerate all modules loaded into the Chrome process.
void EnumerateLoadedModules();
@@ -200,6 +205,9 @@
// The observer, who needs to be notified when we are done.
EnumerateModulesModel* observer_;
+ // See limited_mode below.
+ bool limited_mode_;
+
// The thread that we need to call back on to report that we are done.
BrowserThread::ID callback_thread_id_;
@@ -235,8 +243,14 @@
return confirmed_bad_modules_detected_;
}
- // Asynchronously start the scan for the loaded module list.
- // When the list is ready.
+ // Set to true when we the scanning process can not rely on certain Chrome
+ // services to exists.
+ void set_limited_mode(bool limited_mode) {
+ limited_mode_ = limited_mode;
+ }
+
+ // Asynchronously start the scan for the loaded module list, except when in
+ // limited_mode (in which case it blocks).
void ScanNow();
// Gets the whole module list as a ListValue.
@@ -268,6 +282,13 @@
// start scanning for modules after a certain amount of time has passed.
base::OneShotTimer<EnumerateModulesModel> check_modules_timer_;
+ // While normally |false|, this mode can be set to indicate that the scanning
+ // process should not rely on certain services normally available to Chrome,
+ // such as the resource bundle and the notification system, not to mention
+ // having multiple threads. This mode is useful during diagnostics, which
+ // runs without firing up all necessary Chrome services first.
+ bool limited_mode_;
+
// True if we are currently scanning for modules.
bool scanning_;
« no previous file with comments | « chrome/browser/enumerate_modules_model_unittest_win.cc ('k') | chrome/browser/enumerate_modules_model_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698