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

Unified Diff: chrome/browser/enumerate_modules_model_win.cc

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
« no previous file with comments | « chrome/browser/enumerate_modules_model_win.h ('k') | chrome/browser/resources/about_conflicts.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/enumerate_modules_model_win.cc
===================================================================
--- chrome/browser/enumerate_modules_model_win.cc (revision 70409)
+++ chrome/browser/enumerate_modules_model_win.cc (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.
@@ -126,7 +126,8 @@
static_cast<RecommendedAction>(UPDATE | DISABLE) },
// is3lsp.dll, "%commonprogramfiles%\\is3\\anti-spyware\\".
- { "7ffbdce9", "bc5673f2", "", "", "", INVESTIGATING },
+ { "7ffbdce9", "bc5673f2", "", "", "",
+ static_cast<RecommendedAction>(UPDATE | DISABLE | SEE_LINK) },
// jsi.dll, "%programfiles%\\profilecraze\\".
{ "f9555eea", "e3548061", "", "", "", kUninstallLink },
@@ -291,12 +292,13 @@
GenerateHash(WideToUTF8(module.digital_signer), &signer_hash);
GenerateHash(WideToUTF8(module.description), &description_hash);
- // If signatures match, we have a winner.
- if (!desc_or_signer.empty() && signer_hash == desc_or_signer)
+ // If signatures match (or both are empty), then we have a winner.
+ if (signer_hash == desc_or_signer)
return CONFIRMED_BAD;
- // If description matches and location, then we also have a match.
- if (!desc_or_signer.empty() && description_hash == desc_or_signer &&
+ // If descriptions match (or both are empty) and the locations match, then
+ // we also have a confirmed match.
+ if (description_hash == desc_or_signer &&
!location_hash.empty() && location_hash == blacklisted.location) {
return CONFIRMED_BAD;
}
@@ -311,22 +313,31 @@
ModuleEnumerator::ModuleEnumerator(EnumerateModulesModel* observer)
: observer_(observer),
+ limited_mode_(false),
callback_thread_id_(BrowserThread::ID_COUNT) {
}
ModuleEnumerator::~ModuleEnumerator() {
}
-void ModuleEnumerator::ScanNow(ModulesVector* list) {
- CHECK(BrowserThread::GetCurrentThreadIdentifier(&callback_thread_id_));
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::FILE));
+void ModuleEnumerator::ScanNow(ModulesVector* list, bool limited_mode) {
enumerated_modules_ = list;
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- NewRunnableMethod(this, &ModuleEnumerator::ScanOnFileThread));
+
+ limited_mode_ = limited_mode;
+
+ if (!limited_mode_) {
+ CHECK(BrowserThread::GetCurrentThreadIdentifier(&callback_thread_id_));
+ DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::FILE));
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ NewRunnableMethod(this, &ModuleEnumerator::ScanImpl));
+ } else {
+ // Run it synchronously.
+ ScanImpl();
+ }
}
-void ModuleEnumerator::ScanOnFileThread() {
+void ModuleEnumerator::ScanImpl() {
base::TimeTicks start_time = base::TimeTicks::Now();
enumerated_modules_->clear();
@@ -357,10 +368,15 @@
std::sort(enumerated_modules_->begin(),
enumerated_modules_->end(), ModuleSort);
- // Send a reply back on the UI thread.
- BrowserThread::PostTask(
- callback_thread_id_, FROM_HERE,
- NewRunnableMethod(this, &ModuleEnumerator::ReportBack));
+ if (!limited_mode_) {
+ // Send a reply back on the UI thread.
+ BrowserThread::PostTask(
+ callback_thread_id_, FROM_HERE,
+ NewRunnableMethod(this, &ModuleEnumerator::ReportBack));
+ } else {
+ // We are on the main thread already.
+ ReportBack();
+ }
HISTOGRAM_TIMES("Conflicts.EnumerationTotalTime",
base::TimeTicks::Now() - start_time);
@@ -584,7 +600,8 @@
}
void ModuleEnumerator::ReportBack() {
- DCHECK(BrowserThread::CurrentlyOn(callback_thread_id_));
+ if (!limited_mode_)
+ DCHECK(BrowserThread::CurrentlyOn(callback_thread_id_));
observer_->DoneScanning();
}
@@ -694,7 +711,7 @@
// ScanNow does not block.
if (!module_enumerator_)
module_enumerator_ = new ModuleEnumerator(this);
- module_enumerator_->ScanNow(&enumerated_modules_);
+ module_enumerator_->ScanNow(&enumerated_modules_, limited_mode_);
}
ListValue* EnumerateModulesModel::GetModuleList() {
@@ -727,8 +744,10 @@
}
// Must be one of the above type.
DCHECK(!type_string.empty());
- type_string += ASCIIToWide(" -- ");
- type_string += l10n_util::GetStringUTF16(IDS_CONFLICTS_NOT_LOADED_YET);
+ if (!limited_mode_) {
+ type_string += ASCIIToWide(" -- ");
+ type_string += l10n_util::GetStringUTF16(IDS_CONFLICTS_NOT_LOADED_YET);
+ }
}
data->SetString("type_description", type_string);
data->SetInteger("status", module->status);
@@ -739,40 +758,43 @@
data->SetString("version", module->version);
data->SetString("digital_signer", module->digital_signer);
- // Figure out the possible resolution help string.
- string16 actions;
- string16 separator = ASCIIToWide(" ") + l10n_util::GetStringUTF16(
- IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_SEPERATOR) +
- ASCIIToWide(" ");
+ if (!limited_mode_) {
+ // Figure out the possible resolution help string.
+ string16 actions;
+ string16 separator = ASCIIToWide(" ") + l10n_util::GetStringUTF16(
+ IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_SEPERATOR) +
+ ASCIIToWide(" ");
- if (module->recommended_action & ModuleEnumerator::NONE) {
- actions = l10n_util::GetStringUTF16(
- IDS_CONFLICTS_CHECK_INVESTIGATING);
+ if (module->recommended_action & ModuleEnumerator::NONE) {
+ actions = l10n_util::GetStringUTF16(
+ IDS_CONFLICTS_CHECK_INVESTIGATING);
+ }
+ if (module->recommended_action & ModuleEnumerator::UNINSTALL) {
+ if (!actions.empty())
+ actions += separator;
+ actions = l10n_util::GetStringUTF16(
+ IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_UNINSTALL);
+ }
+ if (module->recommended_action & ModuleEnumerator::UPDATE) {
+ if (!actions.empty())
+ actions += separator;
+ actions += l10n_util::GetStringUTF16(
+ IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_UPDATE);
+ }
+ if (module->recommended_action & ModuleEnumerator::DISABLE) {
+ if (!actions.empty())
+ actions += separator;
+ actions += l10n_util::GetStringUTF16(
+ IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_DISABLE);
+ }
+ string16 possible_resolution = actions.empty() ? ASCIIToWide("") :
+ l10n_util::GetStringUTF16(IDS_CONFLICTS_CHECK_POSSIBLE_ACTIONS) +
+ ASCIIToWide(" ") +
+ actions;
+ data->SetString("possibleResolution", possible_resolution);
+ data->SetString("help_url",
+ ConstructHelpCenterUrl(*module).spec().c_str());
}
- if (module->recommended_action & ModuleEnumerator::UNINSTALL) {
- if (!actions.empty())
- actions += separator;
- actions = l10n_util::GetStringUTF16(
- IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_UNINSTALL);
- }
- if (module->recommended_action & ModuleEnumerator::UPDATE) {
- if (!actions.empty())
- actions += separator;
- actions += l10n_util::GetStringUTF16(
- IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_UPDATE);
- }
- if (module->recommended_action & ModuleEnumerator::DISABLE) {
- if (!actions.empty())
- actions += separator;
- actions += l10n_util::GetStringUTF16(
- IDS_CONFLICTS_CHECK_POSSIBLE_ACTION_DISABLE);
- }
- string16 possible_resolution = actions.empty() ? ASCIIToWide("") :
- l10n_util::GetStringUTF16(IDS_CONFLICTS_CHECK_POSSIBLE_ACTIONS) +
- ASCIIToWide(" ") +
- actions;
- data->SetString("possibleResolution", possible_resolution);
- data->SetString("help_url", ConstructHelpCenterUrl(*module).spec().c_str());
list->Append(data);
}
@@ -783,6 +805,7 @@
EnumerateModulesModel::EnumerateModulesModel()
: scanning_(false),
+ limited_mode_(false),
confirmed_bad_modules_detected_(0),
suspected_bad_modules_detected_(0) {
const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
@@ -819,17 +842,19 @@
HISTOGRAM_COUNTS_100("Conflicts.ConfirmedBadModules",
confirmed_bad_modules_detected_);
- NotificationService::current()->Notify(
- NotificationType::MODULE_LIST_ENUMERATED,
- Source<EnumerateModulesModel>(this),
- NotificationService::NoDetails());
-
- if (suspected_bad_modules_detected_ || confirmed_bad_modules_detected_) {
- bool found_confirmed_bad_modules = confirmed_bad_modules_detected_ > 0;
+ if (!limited_mode_) {
NotificationService::current()->Notify(
- NotificationType::MODULE_INCOMPATIBILITY_DETECTED,
+ NotificationType::MODULE_LIST_ENUMERATED,
Source<EnumerateModulesModel>(this),
- Details<bool>(&found_confirmed_bad_modules));
+ NotificationService::NoDetails());
+
+ if (suspected_bad_modules_detected_ || confirmed_bad_modules_detected_) {
+ bool found_confirmed_bad_modules = confirmed_bad_modules_detected_ > 0;
+ NotificationService::current()->Notify(
+ NotificationType::MODULE_INCOMPATIBILITY_DETECTED,
+ Source<EnumerateModulesModel>(this),
+ Details<bool>(&found_confirmed_bad_modules));
+ }
}
}
« no previous file with comments | « chrome/browser/enumerate_modules_model_win.h ('k') | chrome/browser/resources/about_conflicts.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698