Move ExtensionWarningService and ExtensionsWarningSet, which are used by webrequest api, to extensions.
This cl resolve the dependencies of ExtensionsWarningSet of chrome strings:
- move the declarations of IDS_EXTENSION_WARNINGS_XXX to extensions_strings.grd;
- replace the usage of "IDS_PRODUCT_NAME" by creating GetProductName() function in ExtensionsClient and its subclasses.
BUG=352293
Review URL: https://codereview.chromium.org/503033002
Cr-Commit-Position: refs/heads/master@{#292378}
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index a0c53682..44ce2eb9 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -5065,30 +5065,6 @@
<message name="IDS_EXTENSION_WARNINGS_TITLE" desc="The title of a section in chrome://extensions which contains the warning(s) that relates to one particular extension">
Warning:
</message>
- <message name="IDS_EXTENSION_WARNINGS_NETWORK_DELAY" desc="Warning message indicating that an extension caused excessive network delays for web requests">
- This extension is slowing down <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. You should disable it to restore <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s performance.
- </message>
- <message name="IDS_EXTENSION_WARNINGS_NETWORK_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
- This extension failed to modify a network request because the modification conflicted with another extension.
- </message>
- <message name="IDS_EXTENSION_WARNINGS_REDIRECT_CONFLICT" desc="Warning message indicating that two extensions tried to redirect to different destinations">
- This extension failed to redirect a network request to <ph name="ATTEMPTED_REDIRECT_DESTINATION">$1<ex>http://www.google.com</ex></ph> because another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>) redirected it to <ph name="ACTUAL_REDIRECT_DESTINATION">$3<ex>https://www.google.com</ex></ph>.
- </message>
- <message name="IDS_EXTENSION_WARNINGS_REQUEST_HEADER_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
- This extension failed to modify the request header "<ph name="HEADER_NAME">$1<ex>User-Agent</ex></ph>" of a network request because the modification conflicted with another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>).
- </message>
- <message name="IDS_EXTENSION_WARNINGS_RESPONSE_HEADER_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
- This extension failed to modify the response header "<ph name="HEADER_NAME">$1<ex>User-Agents</ex></ph>" of a network request because the modification conflicted with another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>).
- </message>
- <message name="IDS_EXTENSION_WARNINGS_CREDENTIALS_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
- This extension failed to provide credentials to a network request because another extension (<ph name="EXTENSION_NAME">$1<ex>My Cool Extension</ex></ph>) provided different credentials.
- </message>
- <message name="IDS_EXTENSION_WARNINGS_DOWNLOAD_FILENAME_CONFLICT" desc="Warning message which indicates that two or more extensions tried to determine the filename of a downloaded file in a conflicting way and the modification of this extension was ignored">
- This extension failed to name the download "<ph name="ATTEMPTED_FILENAME">$1<ex>apple.png</ex></ph>" because another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>) determined a different filename "<ph name="ACTUAL_FILENAME">$3<ex>banana.png</ex></ph>".
- </message>
- <message name="IDS_EXTENSION_WARNING_RELOAD_TOO_FREQUENT" desc="Warning message which indates that an extension got stuck in a reload loop.">
- This extension reloaded itself too frequently.
- </message>
<!-- External extension install alerts -->
<!-- TODO(mpcomplete): We may need to change Chrome to
diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc
index 704f4639..a98c89f 100644
--- a/chrome/browser/extensions/api/downloads/downloads_api.cc
+++ b/chrome/browser/extensions/api/downloads/downloads_api.cc
@@ -35,7 +35,6 @@
#include "chrome/browser/download/download_shelf.h"
#include "chrome/browser/download/download_stats.h"
#include "chrome/browser/download/drag_download_item.h"
-#include "chrome/browser/extensions/extension_warning_service.h"
#include "chrome/browser/icon_loader.h"
#include "chrome/browser/icon_manager.h"
#include "chrome/browser/platform_util.h"
@@ -64,6 +63,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/notification_types.h"
+#include "extensions/browser/warning_service.h"
#include "extensions/common/permissions/permissions_data.h"
#include "net/base/filename_util.h"
#include "net/base/load_flags.h"
@@ -738,7 +738,7 @@
// later take precedence over previous extensions.
if (!filename.empty() ||
(conflict_action != downloads::FILENAME_CONFLICT_ACTION_UNIQUIFY)) {
- ExtensionWarningSet warnings;
+ WarningSet warnings;
std::string winner_extension_id;
ExtensionDownloadsEventRouter::DetermineFilenameInternal(
filename,
@@ -752,7 +752,7 @@
&determined_conflict_action_,
&warnings);
if (!warnings.empty())
- ExtensionWarningService::NotifyWarningsOnUI(profile, warnings);
+ WarningService::NotifyWarningsOnUI(profile, warnings);
if (winner_extension_id == determiners_[index].extension_id)
determiner_ = determiners_[index];
}
@@ -1666,7 +1666,7 @@
std::string* winner_extension_id,
base::FilePath* determined_filename,
downloads::FilenameConflictAction* determined_conflict_action,
- ExtensionWarningSet* warnings) {
+ WarningSet* warnings) {
DCHECK(!filename.empty() ||
(conflict_action != downloads::FILENAME_CONFLICT_ACTION_UNIQUIFY));
DCHECK(!suggesting_extension_id.empty());
@@ -1680,7 +1680,7 @@
if (suggesting_install_time < incumbent_install_time) {
*winner_extension_id = incumbent_extension_id;
- warnings->insert(ExtensionWarning::CreateDownloadFilenameConflictWarning(
+ warnings->insert(Warning::CreateDownloadFilenameConflictWarning(
suggesting_extension_id,
incumbent_extension_id,
filename,
@@ -1689,7 +1689,7 @@
}
*winner_extension_id = suggesting_extension_id;
- warnings->insert(ExtensionWarning::CreateDownloadFilenameConflictWarning(
+ warnings->insert(Warning::CreateDownloadFilenameConflictWarning(
incumbent_extension_id,
suggesting_extension_id,
*determined_filename,
diff --git a/chrome/browser/extensions/api/downloads/downloads_api.h b/chrome/browser/extensions/api/downloads/downloads_api.h
index 916582ed..aaf92d32 100644
--- a/chrome/browser/extensions/api/downloads/downloads_api.h
+++ b/chrome/browser/extensions/api/downloads/downloads_api.h
@@ -14,11 +14,11 @@
#include "chrome/browser/download/download_danger_prompt.h"
#include "chrome/browser/download/download_path_reservation_tracker.h"
#include "chrome/browser/extensions/chrome_extension_function.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/common/extensions/api/downloads.h"
#include "content/public/browser/download_manager.h"
#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_registry_observer.h"
+#include "extensions/browser/warning_set.h"
class DownloadFileIconExtractor;
class DownloadQuery;
@@ -324,7 +324,7 @@
base::FilePath* determined_filename,
extensions::api::downloads::FilenameConflictAction*
determined_conflict_action,
- extensions::ExtensionWarningSet* warnings);
+ extensions::WarningSet* warnings);
// A downloads.onDeterminingFilename listener has returned. If the extension
// wishes to override the download's filename, then |filename| will be
diff --git a/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc b/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
index 18c536f..d513b9ff 100644
--- a/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
+++ b/chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc
@@ -4096,7 +4096,7 @@
base::FilePath filename;
downloads::FilenameConflictAction conflict_action =
downloads::FILENAME_CONFLICT_ACTION_UNIQUIFY;
- ExtensionWarningSet warnings;
+ WarningSet warnings;
// Empty incumbent determiner
warnings.clear();
@@ -4133,7 +4133,7 @@
EXPECT_EQ(FILE_PATH_LITERAL("a"), filename.value());
EXPECT_EQ(downloads::FILENAME_CONFLICT_ACTION_OVERWRITE, conflict_action);
EXPECT_FALSE(warnings.empty());
- EXPECT_EQ(ExtensionWarning::kDownloadFilenameConflict,
+ EXPECT_EQ(Warning::kDownloadFilenameConflict,
warnings.begin()->warning_type());
EXPECT_EQ("suggester", warnings.begin()->extension_id());
@@ -4154,7 +4154,7 @@
EXPECT_EQ(FILE_PATH_LITERAL("b"), filename.value());
EXPECT_EQ(downloads::FILENAME_CONFLICT_ACTION_PROMPT, conflict_action);
EXPECT_FALSE(warnings.empty());
- EXPECT_EQ(ExtensionWarning::kDownloadFilenameConflict,
+ EXPECT_EQ(Warning::kDownloadFilenameConflict,
warnings.begin()->warning_type());
EXPECT_EQ("incumbent", warnings.begin()->extension_id());
}
diff --git a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
index 767b444..9ab0684c 100644
--- a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+++ b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
@@ -8,8 +8,6 @@
#include "base/metrics/histogram.h"
#include "base/time/time.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_warning_service.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/extensions/updater/extension_updater.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -19,6 +17,8 @@
#include "content/public/browser/notification_service.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/notification_types.h"
+#include "extensions/browser/warning_service.h"
+#include "extensions/browser/warning_set.h"
#include "extensions/common/api/runtime.h"
#if defined(OS_CHROMEOS)
@@ -120,13 +120,13 @@
base::Bind(&ExtensionService::TerminateExtension,
service->AsWeakPtr(),
extension_id));
- extensions::ExtensionWarningSet warnings;
+ extensions::WarningSet warnings;
warnings.insert(
- extensions::ExtensionWarning::CreateReloadTooFrequentWarning(
+ extensions::Warning::CreateReloadTooFrequentWarning(
extension_id));
base::MessageLoop::current()->PostTask(
FROM_HERE,
- base::Bind(&extensions::ExtensionWarningService::NotifyWarningsOnUI,
+ base::Bind(&extensions::WarningService::NotifyWarningsOnUI,
browser_context_,
warnings));
} else {
diff --git a/chrome/browser/extensions/api/web_request/web_request_api.cc b/chrome/browser/extensions/api/web_request/web_request_api.cc
index d0cc875..aaa6021 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api.cc
@@ -30,8 +30,6 @@
#include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h"
#include "chrome/browser/extensions/api/web_request/web_request_time_tracker.h"
#include "chrome/browser/extensions/extension_renderer_state.h"
-#include "chrome/browser/extensions/extension_warning_service.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/extensions/api/web_request.h"
@@ -53,6 +51,8 @@
#include "extensions/browser/guest_view/web_view/web_view_renderer_state.h"
#include "extensions/browser/info_map.h"
#include "extensions/browser/runtime_data.h"
+#include "extensions/browser/warning_service.h"
+#include "extensions/browser/warning_set.h"
#include "extensions/common/error_utils.h"
#include "extensions/common/event_filtering_info.h"
#include "extensions/common/extension.h"
@@ -79,12 +79,12 @@
using content::ResourceType;
using extensions::ErrorUtils;
using extensions::Extension;
-using extensions::ExtensionWarning;
-using extensions::ExtensionWarningService;
-using extensions::ExtensionWarningSet;
using extensions::InfoMap;
using extensions::Feature;
using extensions::RulesRegistryService;
+using extensions::Warning;
+using extensions::WarningService;
+using extensions::WarningSet;
namespace helpers = extension_web_request_api_helpers;
namespace keys = extension_web_request_api_constants;
@@ -1884,7 +1884,7 @@
bool credentials_set = false;
deltas.sort(&helpers::InDecreasingExtensionInstallationTimeOrder);
- ExtensionWarningSet warnings;
+ WarningSet warnings;
bool canceled = false;
helpers::MergeCancelOfResponses(
@@ -1933,8 +1933,7 @@
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
- base::Bind(&ExtensionWarningService::NotifyWarningsOnUI,
- profile, warnings));
+ base::Bind(&WarningService::NotifyWarningsOnUI, profile, warnings));
}
if (canceled) {
@@ -2456,14 +2455,13 @@
void WebRequestHandlerBehaviorChangedFunction::OnQuotaExceeded(
const std::string& violation_error) {
// Post warning message.
- ExtensionWarningSet warnings;
+ WarningSet warnings;
warnings.insert(
- ExtensionWarning::CreateRepeatedCacheFlushesWarning(extension_id()));
+ Warning::CreateRepeatedCacheFlushesWarning(extension_id()));
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
- base::Bind(&ExtensionWarningService::NotifyWarningsOnUI,
- profile_id(), warnings));
+ base::Bind(&WarningService::NotifyWarningsOnUI, profile_id(), warnings));
// Continue gracefully.
RunSync();
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_helpers.cc b/chrome/browser/extensions/api/web_request/web_request_api_helpers.cc
index 80860db..2cfbde5 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_helpers.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api_helpers.cc
@@ -14,13 +14,13 @@
#include "base/values.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/api/web_request/web_request_api.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/renderer_host/web_cache_manager.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/runtime_data.h"
+#include "extensions/browser/warning_set.h"
#include "net/base/net_log.h"
#include "net/cookies/cookie_util.h"
#include "net/cookies/parsed_cookie.h"
@@ -33,7 +33,6 @@
using base::Time;
using content::ResourceType;
-using extensions::ExtensionWarning;
using net::cookie_util::ParsedRequestCookie;
using net::cookie_util::ParsedRequestCookies;
@@ -415,7 +414,7 @@
static bool MergeRedirectUrlOfResponsesHelper(
const EventResponseDeltas& deltas,
GURL* new_url,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log,
bool consider_only_cancel_scheme_urls) {
bool redirected = false;
@@ -441,7 +440,7 @@
CreateNetLogExtensionIdCallback(delta->get()));
} else {
conflicting_extensions->insert(
- ExtensionWarning::CreateRedirectConflictWarning(
+ extensions::Warning::CreateRedirectConflictWarning(
(*delta)->extension_id,
winning_extension_id,
(*delta)->new_url,
@@ -457,7 +456,7 @@
void MergeRedirectUrlOfResponses(
const EventResponseDeltas& deltas,
GURL* new_url,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log) {
// First handle only redirects to data:// URLs and about:blank. These are a
@@ -477,7 +476,7 @@
void MergeOnBeforeRequestResponses(
const EventResponseDeltas& deltas,
GURL* new_url,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log) {
MergeRedirectUrlOfResponses(deltas, new_url, conflicting_extensions, net_log);
}
@@ -603,7 +602,7 @@
void MergeCookiesInOnBeforeSendHeadersResponses(
const EventResponseDeltas& deltas,
net::HttpRequestHeaders* request_headers,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log) {
// Skip all work if there are no registered cookie modifications.
bool cookie_modifications_exist = false;
@@ -675,7 +674,7 @@
void MergeOnBeforeSendHeadersResponses(
const EventResponseDeltas& deltas,
net::HttpRequestHeaders* request_headers,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log) {
EventResponseDeltas::const_iterator delta;
@@ -776,7 +775,7 @@
base::Bind(&NetLogModificationCallback, delta->get()));
} else {
conflicting_extensions->insert(
- ExtensionWarning::CreateRequestHeaderConflictWarning(
+ extensions::Warning::CreateRequestHeaderConflictWarning(
(*delta)->extension_id, winning_extension_id,
conflicting_header));
net_log->AddEvent(
@@ -983,7 +982,7 @@
const EventResponseDeltas& deltas,
const net::HttpResponseHeaders* original_response_headers,
scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log) {
// Skip all work if there are no registered cookie modifications.
bool cookie_modifications_exist = false;
@@ -1044,7 +1043,7 @@
const net::HttpResponseHeaders* original_response_headers,
scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
GURL* allowed_unsafe_redirect_url,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log) {
EventResponseDeltas::const_iterator delta;
@@ -1114,7 +1113,7 @@
CreateNetLogExtensionIdCallback(delta->get()));
} else {
conflicting_extensions->insert(
- ExtensionWarning::CreateResponseHeaderConflictWarning(
+ extensions::Warning::CreateResponseHeaderConflictWarning(
(*delta)->extension_id, winning_extension_id,
conflicting_header));
net_log->AddEvent(
@@ -1147,7 +1146,7 @@
bool MergeOnAuthRequiredResponses(
const EventResponseDeltas& deltas,
net::AuthCredentials* auth_credentials,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log) {
CHECK(auth_credentials);
bool credentials_set = false;
@@ -1164,7 +1163,7 @@
auth_credentials->password() != (*delta)->auth_credentials->password();
if (credentials_set && different) {
conflicting_extensions->insert(
- ExtensionWarning::CreateCredentialsConflictWarning(
+ extensions::Warning::CreateCredentialsConflictWarning(
(*delta)->extension_id, winning_extension_id));
net_log->AddEvent(
net::NetLog::TYPE_CHROME_EXTENSION_IGNORED_DUE_TO_CONFLICT,
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_helpers.h b/chrome/browser/extensions/api/web_request/web_request_api_helpers.h
index dc06edd..77d540a 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_helpers.h
+++ b/chrome/browser/extensions/api/web_request/web_request_api_helpers.h
@@ -15,8 +15,8 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/time/time.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "content/public/common/resource_type.h"
+#include "extensions/browser/warning_set.h"
#include "net/base/auth.h"
#include "net/http/http_request_headers.h"
#include "net/http/http_response_headers.h"
@@ -242,7 +242,7 @@
void MergeRedirectUrlOfResponses(
const EventResponseDeltas& deltas,
GURL* new_url,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log);
// Stores in |*new_url| the redirect request of the extension with highest
// precedence. Extensions that did not command to redirect the request are
@@ -250,7 +250,7 @@
void MergeOnBeforeRequestResponses(
const EventResponseDeltas& deltas,
GURL* new_url,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log);
// Modifies the "Cookie" header in |request_headers| according to
// |deltas.request_cookie_modifications|. Conflicts are currently ignored
@@ -258,14 +258,14 @@
void MergeCookiesInOnBeforeSendHeadersResponses(
const EventResponseDeltas& deltas,
net::HttpRequestHeaders* request_headers,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log);
// Modifies the headers in |request_headers| according to |deltas|. Conflicts
// are tried to be resolved.
void MergeOnBeforeSendHeadersResponses(
const EventResponseDeltas& deltas,
net::HttpRequestHeaders* request_headers,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log);
// Modifies the "Set-Cookie" headers in |override_response_headers| according to
// |deltas.response_cookie_modifications|. If |override_response_headers| is
@@ -275,7 +275,7 @@
const EventResponseDeltas& deltas,
const net::HttpResponseHeaders* original_response_headers,
scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log);
// Stores a copy of |original_response_header| into |override_response_headers|
// that is modified according to |deltas|. If |deltas| does not instruct to
@@ -288,7 +288,7 @@
const net::HttpResponseHeaders* original_response_headers,
scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
GURL* allowed_unsafe_redirect_url,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log);
// Merge the responses of blocked onAuthRequired handlers. The first
// registered listener that supplies authentication credentials in a response,
@@ -299,7 +299,7 @@
bool MergeOnAuthRequiredResponses(
const EventResponseDeltas& deltas,
net::AuthCredentials* auth_credentials,
- extensions::ExtensionWarningSet* conflicting_extensions,
+ extensions::WarningSet* conflicting_extensions,
const net::BoundNetLog* net_log);
// Returns whether |type| is a ResourceType that is handled by the web request
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
index fb1d05f..725938d 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
@@ -27,7 +27,6 @@
#include "chrome/browser/extensions/api/web_request/web_request_api_constants.h"
#include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h"
#include "chrome/browser/extensions/event_router_forwarder.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/net/about_protocol_handler.h"
#include "chrome/browser/net/chrome_network_delegate.h"
#include "chrome/common/extensions/api/web_request.h"
@@ -38,6 +37,7 @@
#include "chrome/test/base/testing_profile_manager.h"
#include "content/public/common/url_constants.h"
#include "content/public/test/test_browser_thread_bundle.h"
+#include "extensions/browser/warning_set.h"
#include "extensions/common/extension_messages.h"
#include "extensions/common/features/feature.h"
#include "net/base/auth.h"
@@ -105,9 +105,9 @@
}
// Returns whether |warnings| contains an extension for |extension_id|.
-bool HasWarning(const ExtensionWarningSet& warnings,
+bool HasWarning(const WarningSet& warnings,
const std::string& extension_id) {
- for (ExtensionWarningSet::const_iterator i = warnings.begin();
+ for (WarningSet::const_iterator i = warnings.begin();
i != warnings.end(); ++i) {
if (i->extension_id() == extension_id)
return true;
@@ -1347,7 +1347,7 @@
EventResponseDeltas deltas;
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
GURL effective_new_url;
// No redirect
@@ -1428,7 +1428,7 @@
EventResponseDeltas deltas;
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
GURL effective_new_url;
// Single redirect.
@@ -1497,7 +1497,7 @@
EventResponseDeltas deltas;
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
GURL effective_new_url;
// Single redirect.
@@ -1533,7 +1533,7 @@
base_headers.AddHeaderFromString("key2: value 2");
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
std::string header_value;
EventResponseDeltas deltas;
@@ -1629,7 +1629,7 @@
"Cookie: name=value; name2=value2; name3=\"value3\"");
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
std::string header_value;
EventResponseDeltas deltas;
@@ -1713,7 +1713,7 @@
TestMergeCookiesInOnHeadersReceivedResponses) {
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
std::string header_value;
EventResponseDeltas deltas;
@@ -1948,7 +1948,7 @@
TEST(ExtensionWebRequestHelpersTest, TestMergeOnHeadersReceivedResponses) {
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
std::string header_value;
EventResponseDeltas deltas;
@@ -2048,7 +2048,7 @@
TestMergeOnHeadersReceivedResponsesDeletion) {
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
std::string header_value;
EventResponseDeltas deltas;
@@ -2102,7 +2102,7 @@
EventResponseDeltas deltas;
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
char base_headers_string[] =
"HTTP/1.0 200 OK\r\n"
@@ -2155,7 +2155,7 @@
TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) {
net::CapturingBoundNetLog capturing_net_log;
net::BoundNetLog net_log = capturing_net_log.bound();
- ExtensionWarningSet warning_set;
+ WarningSet warning_set;
EventResponseDeltas deltas;
base::string16 username = base::ASCIIToUTF16("foo");
base::string16 password = base::ASCIIToUTF16("bar");
diff --git a/chrome/browser/extensions/api/web_request/web_request_time_tracker.cc b/chrome/browser/extensions/api/web_request/web_request_time_tracker.cc
index d95e2b8..0c7094a7 100644
--- a/chrome/browser/extensions/api/web_request/web_request_time_tracker.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_time_tracker.cc
@@ -9,9 +9,9 @@
#include "base/metrics/histogram.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "content/public/browser/browser_thread.h"
+#include "extensions/browser/warning_set.h"
using content::BrowserThread;
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
index 3e17480..63583caa3 100644
--- a/chrome/browser/extensions/extension_system_impl.cc
+++ b/chrome/browser/extensions/extension_system_impl.cc
@@ -24,7 +24,6 @@
#include "chrome/browser/extensions/extension_system_factory.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/extension_warning_badge_service.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/extensions/install_verifier.h"
#include "chrome/browser/extensions/navigation_observer.h"
#include "chrome/browser/extensions/shared_module_service.h"
@@ -59,6 +58,8 @@
#include "extensions/browser/quota_service.h"
#include "extensions/browser/runtime_data.h"
#include "extensions/browser/state_store.h"
+#include "extensions/browser/warning_service.h"
+#include "extensions/browser/warning_set.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest.h"
@@ -383,10 +384,10 @@
// Make the chrome://extension-icon/ resource available.
content::URLDataSource::Add(profile_, new ExtensionIconSource(profile_));
- extension_warning_service_.reset(new ExtensionWarningService(profile_));
+ warning_service_.reset(new WarningService(profile_));
extension_warning_badge_service_.reset(
new ExtensionWarningBadgeService(profile_));
- extension_warning_service_->AddObserver(
+ warning_service_->AddObserver(
extension_warning_badge_service_.get());
error_console_.reset(new ErrorConsole(profile_));
quota_service_.reset(new QuotaService);
@@ -411,8 +412,8 @@
}
void ExtensionSystemImpl::Shared::Shutdown() {
- if (extension_warning_service_) {
- extension_warning_service_->RemoveObserver(
+ if (warning_service_) {
+ warning_service_->RemoveObserver(
extension_warning_badge_service_.get());
}
if (content_verifier_.get())
@@ -461,8 +462,8 @@
return event_router_.get();
}
-ExtensionWarningService* ExtensionSystemImpl::Shared::warning_service() {
- return extension_warning_service_.get();
+WarningService* ExtensionSystemImpl::Shared::warning_service() {
+ return warning_service_.get();
}
Blacklist* ExtensionSystemImpl::Shared::blacklist() {
@@ -579,7 +580,7 @@
return shared_->event_router();
}
-ExtensionWarningService* ExtensionSystemImpl::warning_service() {
+WarningService* ExtensionSystemImpl::warning_service() {
return shared_->warning_service();
}
diff --git a/chrome/browser/extensions/extension_system_impl.h b/chrome/browser/extensions/extension_system_impl.h
index 2f1eddc..8b0b39e 100644
--- a/chrome/browser/extensions/extension_system_impl.h
+++ b/chrome/browser/extensions/extension_system_impl.h
@@ -49,7 +49,7 @@
OVERRIDE; // shared
virtual InfoMap* info_map() OVERRIDE; // shared
virtual EventRouter* event_router() OVERRIDE; // shared
- virtual ExtensionWarningService* warning_service() OVERRIDE;
+ virtual WarningService* warning_service() OVERRIDE;
virtual Blacklist* blacklist() OVERRIDE; // shared
virtual ErrorConsole* error_console() OVERRIDE;
virtual InstallVerifier* install_verifier() OVERRIDE;
@@ -100,7 +100,7 @@
InfoMap* info_map();
LazyBackgroundTaskQueue* lazy_background_task_queue();
EventRouter* event_router();
- ExtensionWarningService* warning_service();
+ WarningService* warning_service();
ErrorConsole* error_console();
InstallVerifier* install_verifier();
QuotaService* quota_service();
@@ -141,7 +141,7 @@
scoped_ptr<ManagementPolicy> management_policy_;
// extension_info_map_ needs to outlive process_manager_.
scoped_refptr<InfoMap> extension_info_map_;
- scoped_ptr<ExtensionWarningService> extension_warning_service_;
+ scoped_ptr<WarningService> warning_service_;
scoped_ptr<ExtensionWarningBadgeService> extension_warning_badge_service_;
scoped_ptr<ErrorConsole> error_console_;
scoped_ptr<InstallVerifier> install_verifier_;
diff --git a/chrome/browser/extensions/extension_warning_badge_service.cc b/chrome/browser/extensions/extension_warning_badge_service.cc
index 7aa6bbc..b34ad6b 100644
--- a/chrome/browser/extensions/extension_warning_badge_service.cc
+++ b/chrome/browser/extensions/extension_warning_badge_service.cc
@@ -99,15 +99,14 @@
DCHECK(CalledOnValidThread());
size_t old_size = suppressed_warnings_.size();
- const ExtensionWarningSet& warnings = GetCurrentWarnings();
+ const WarningSet& warnings = GetCurrentWarnings();
suppressed_warnings_.insert(warnings.begin(), warnings.end());
if (old_size != suppressed_warnings_.size())
UpdateBadgeStatus();
}
-const ExtensionWarningSet&
-ExtensionWarningBadgeService::GetCurrentWarnings() const {
+const WarningSet& ExtensionWarningBadgeService::GetCurrentWarnings() const {
return ExtensionSystem::Get(profile_)->warning_service()->warnings();
}
@@ -117,9 +116,9 @@
}
void ExtensionWarningBadgeService::UpdateBadgeStatus() {
- const std::set<ExtensionWarning>& warnings = GetCurrentWarnings();
+ const std::set<Warning>& warnings = GetCurrentWarnings();
bool non_suppressed_warnings_exist = false;
- for (std::set<ExtensionWarning>::const_iterator i = warnings.begin();
+ for (std::set<Warning>::const_iterator i = warnings.begin();
i != warnings.end(); ++i) {
if (!ContainsKey(suppressed_warnings_, *i)) {
non_suppressed_warnings_exist = true;
diff --git a/chrome/browser/extensions/extension_warning_badge_service.h b/chrome/browser/extensions/extension_warning_badge_service.h
index 461bc5c..a000bb7f 100644
--- a/chrome/browser/extensions/extension_warning_badge_service.h
+++ b/chrome/browser/extensions/extension_warning_badge_service.h
@@ -7,8 +7,8 @@
#include "base/compiler_specific.h"
#include "base/threading/non_thread_safe.h"
-#include "chrome/browser/extensions/extension_warning_service.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
+#include "extensions/browser/warning_service.h"
+#include "extensions/browser/warning_set.h"
// TODO(battre): Rename ExtensionWarningBadgeService to WarningBadgeService.
@@ -18,7 +18,7 @@
// A service that is responsible for showing an extension warning badge on the
// wrench menu.
-class ExtensionWarningBadgeService : public ExtensionWarningService::Observer,
+class ExtensionWarningBadgeService : public WarningService::Observer,
public base::NonThreadSafe {
public:
explicit ExtensionWarningBadgeService(Profile* profile);
@@ -30,10 +30,10 @@
protected:
// Virtual for testing.
- virtual const std::set<ExtensionWarning>& GetCurrentWarnings() const;
+ virtual const std::set<Warning>& GetCurrentWarnings() const;
private:
- // Implementation of ExtensionWarningService::Observer.
+ // Implementation of WarningService::Observer.
virtual void ExtensionWarningsChanged() OVERRIDE;
void UpdateBadgeStatus();
@@ -42,7 +42,7 @@
Profile* profile_;
// Warnings that do not trigger a badge on the wrench menu.
- ExtensionWarningSet suppressed_warnings_;
+ WarningSet suppressed_warnings_;
DISALLOW_COPY_AND_ASSIGN(ExtensionWarningBadgeService);
};
diff --git a/chrome/browser/extensions/extension_warning_badge_service_unittest.cc b/chrome/browser/extensions/extension_warning_badge_service_unittest.cc
index 2eb9174..4b144d1 100644
--- a/chrome/browser/extensions/extension_warning_badge_service_unittest.cc
+++ b/chrome/browser/extensions/extension_warning_badge_service_unittest.cc
@@ -5,26 +5,26 @@
#include "chrome/browser/extensions/extension_warning_badge_service.h"
#include "chrome/app/chrome_command_ids.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/global_error/global_error_service.h"
#include "chrome/browser/ui/global_error/global_error_service_factory.h"
#include "chrome/test/base/testing_profile.h"
+#include "extensions/browser/warning_service.h"
+#include "extensions/browser/warning_set.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace extensions {
namespace {
-class TestExtensionWarningSet : public ExtensionWarningService {
+class TestExtensionWarningSet : public WarningService {
public:
- explicit TestExtensionWarningSet(Profile* profile)
- : ExtensionWarningService(profile) {
+ explicit TestExtensionWarningSet(Profile* profile) : WarningService(profile) {
}
virtual ~TestExtensionWarningSet() {}
- void AddWarning(const ExtensionWarning& warning) {
- ExtensionWarningSet warnings;
+ void AddWarning(const Warning& warning) {
+ WarningSet warnings;
warnings.insert(warning);
AddWarnings(warnings);
}
@@ -33,18 +33,18 @@
class TestExtensionWarningBadgeService : public ExtensionWarningBadgeService {
public:
TestExtensionWarningBadgeService(Profile* profile,
- ExtensionWarningService* warning_service)
+ WarningService* warning_service)
: ExtensionWarningBadgeService(profile),
warning_service_(warning_service) {}
virtual ~TestExtensionWarningBadgeService() {}
- virtual const std::set<ExtensionWarning>&
+ virtual const std::set<Warning>&
GetCurrentWarnings() const OVERRIDE {
return warning_service_->warnings();
}
private:
- ExtensionWarningService* warning_service_;
+ WarningService* warning_service_;
};
bool HasBadge(Profile* profile) {
@@ -68,7 +68,7 @@
warnings.AddObserver(&badge_service);
// Insert first warning.
- warnings.AddWarning(ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
+ warnings.AddWarning(Warning::CreateNetworkDelayWarning(ext1_id));
EXPECT_TRUE(HasBadge(&profile));
// Suppress first warning.
@@ -76,17 +76,17 @@
EXPECT_FALSE(HasBadge(&profile));
// Simulate deinstallation of extension.
- std::set<ExtensionWarning::WarningType> to_clear =
+ std::set<Warning::WarningType> to_clear =
warnings.GetWarningTypesAffectingExtension(ext1_id);
warnings.ClearWarnings(to_clear);
EXPECT_FALSE(HasBadge(&profile));
// Set first warning again and verify that not badge is shown this time.
- warnings.AddWarning(ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
+ warnings.AddWarning(Warning::CreateNetworkDelayWarning(ext1_id));
EXPECT_FALSE(HasBadge(&profile));
// Set second warning and verify that it shows a badge.
- warnings.AddWarning(ExtensionWarning::CreateNetworkConflictWarning(ext2_id));
+ warnings.AddWarning(Warning::CreateNetworkConflictWarning(ext2_id));
EXPECT_TRUE(HasBadge(&profile));
warnings.RemoveObserver(&badge_service);
diff --git a/chrome/browser/extensions/extension_warning_service.cc b/chrome/browser/extensions/extension_warning_service.cc
deleted file mode 100644
index ab929a2..0000000
--- a/chrome/browser/extensions/extension_warning_service.cc
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2012 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.
-
-#include "chrome/browser/extensions/extension_warning_service.h"
-
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "content/public/browser/browser_thread.h"
-#include "extensions/browser/extension_registry.h"
-#include "extensions/browser/extension_system.h"
-
-using content::BrowserThread;
-
-namespace extensions {
-
-ExtensionWarningService::ExtensionWarningService(Profile* profile)
- : profile_(profile), extension_registry_observer_(this) {
- DCHECK(CalledOnValidThread());
- if (profile_) {
- extension_registry_observer_.Add(
- ExtensionRegistry::Get(profile_->GetOriginalProfile()));
- }
-}
-
-ExtensionWarningService::~ExtensionWarningService() {}
-
-void ExtensionWarningService::ClearWarnings(
- const std::set<ExtensionWarning::WarningType>& types) {
- DCHECK(CalledOnValidThread());
- bool deleted_anything = false;
- for (ExtensionWarningSet::iterator i = warnings_.begin();
- i != warnings_.end();) {
- if (types.find(i->warning_type()) != types.end()) {
- deleted_anything = true;
- warnings_.erase(i++);
- } else {
- ++i;
- }
- }
-
- if (deleted_anything)
- NotifyWarningsChanged();
-}
-
-std::set<ExtensionWarning::WarningType>
-ExtensionWarningService::GetWarningTypesAffectingExtension(
- const std::string& extension_id) const {
- DCHECK(CalledOnValidThread());
- std::set<ExtensionWarning::WarningType> result;
- for (ExtensionWarningSet::const_iterator i = warnings_.begin();
- i != warnings_.end(); ++i) {
- if (i->extension_id() == extension_id)
- result.insert(i->warning_type());
- }
- return result;
-}
-
-std::vector<std::string>
-ExtensionWarningService::GetWarningMessagesForExtension(
- const std::string& extension_id) const {
- DCHECK(CalledOnValidThread());
- std::vector<std::string> result;
-
- const ExtensionService* extension_service =
- ExtensionSystem::Get(profile_)->extension_service();
-
- for (ExtensionWarningSet::const_iterator i = warnings_.begin();
- i != warnings_.end(); ++i) {
- if (i->extension_id() == extension_id)
- result.push_back(i->GetLocalizedMessage(extension_service->extensions()));
- }
- return result;
-}
-
-void ExtensionWarningService::AddWarnings(
- const ExtensionWarningSet& warnings) {
- DCHECK(CalledOnValidThread());
- size_t old_size = warnings_.size();
-
- warnings_.insert(warnings.begin(), warnings.end());
-
- if (old_size != warnings_.size())
- NotifyWarningsChanged();
-}
-
-// static
-void ExtensionWarningService::NotifyWarningsOnUI(
- void* profile_id,
- const ExtensionWarningSet& warnings) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- Profile* profile = reinterpret_cast<Profile*>(profile_id);
- if (!profile ||
- !g_browser_process->profile_manager() ||
- !g_browser_process->profile_manager()->IsValidProfile(profile)) {
- return;
- }
-
- extensions::ExtensionWarningService* warning_service =
- extensions::ExtensionSystem::Get(profile)->warning_service();
-
- warning_service->AddWarnings(warnings);
-}
-
-void ExtensionWarningService::AddObserver(Observer* observer) {
- observer_list_.AddObserver(observer);
-}
-
-void ExtensionWarningService::RemoveObserver(Observer* observer) {
- observer_list_.RemoveObserver(observer);
-}
-
-void ExtensionWarningService::NotifyWarningsChanged() {
- FOR_EACH_OBSERVER(Observer, observer_list_, ExtensionWarningsChanged());
-}
-
-void ExtensionWarningService::OnExtensionUnloaded(
- content::BrowserContext* browser_context,
- const Extension* extension,
- UnloadedExtensionInfo::Reason reason) {
- // Unloading one extension might have solved the problems of others.
- // Therefore, we clear warnings of this type for all extensions.
- std::set<ExtensionWarning::WarningType> warning_types =
- GetWarningTypesAffectingExtension(extension->id());
- ClearWarnings(warning_types);
-}
-
-} // namespace extensions
diff --git a/chrome/browser/extensions/test_extension_system.cc b/chrome/browser/extensions/test_extension_system.cc
index b1cbb872..75ad63d 100644
--- a/chrome/browser/extensions/test_extension_system.cc
+++ b/chrome/browser/extensions/test_extension_system.cc
@@ -159,7 +159,7 @@
EventRouter* TestExtensionSystem::event_router() { return event_router_.get(); }
-ExtensionWarningService* TestExtensionSystem::warning_service() {
+WarningService* TestExtensionSystem::warning_service() {
return NULL;
}
diff --git a/chrome/browser/extensions/test_extension_system.h b/chrome/browser/extensions/test_extension_system.h
index fb88ef3..d2164d9 100644
--- a/chrome/browser/extensions/test_extension_system.h
+++ b/chrome/browser/extensions/test_extension_system.h
@@ -73,7 +73,7 @@
virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE;
void SetEventRouter(scoped_ptr<EventRouter> event_router);
virtual EventRouter* event_router() OVERRIDE;
- virtual ExtensionWarningService* warning_service() OVERRIDE;
+ virtual WarningService* warning_service() OVERRIDE;
virtual Blacklist* blacklist() OVERRIDE;
virtual ErrorConsole* error_console() OVERRIDE;
virtual InstallVerifier* install_verifier() OVERRIDE;
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
index 8885a578..87f8a3f3 100644
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
@@ -37,7 +37,6 @@
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/extensions/extension_ui_util.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "chrome/browser/extensions/install_verifier.h"
#include "chrome/browser/extensions/path_util.h"
#include "chrome/browser/extensions/shared_module_service.h"
@@ -84,6 +83,7 @@
#include "extensions/browser/pref_names.h"
#include "extensions/browser/uninstall_reason.h"
#include "extensions/browser/view_type_utils.h"
+#include "extensions/browser/warning_set.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
@@ -210,7 +210,7 @@
base::DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue(
const Extension* extension,
const std::vector<ExtensionPage>& pages,
- const ExtensionWarningService* warning_service) {
+ const WarningService* warning_service) {
// The items which are to be written into app_dict are also described in
// chrome/browser/resources/extensions/extension_list.js in @typedef for
// ExtensionData. Please update it whenever you add or remove any keys here.
@@ -829,8 +829,7 @@
// Add the extensions to the results structure.
base::ListValue* extensions_list = new base::ListValue();
- ExtensionWarningService* warnings =
- ExtensionSystem::Get(profile)->warning_service();
+ WarningService* warnings = ExtensionSystem::Get(profile)->warning_service();
ExtensionRegistry* registry = ExtensionRegistry::Get(profile);
const ExtensionSet& enabled_set = registry->enabled_extensions();
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.h b/chrome/browser/ui/webui/extensions/extension_settings_handler.h
index d299a54..7cca3a3 100644
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.h
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.h
@@ -16,7 +16,6 @@
#include "chrome/browser/extensions/extension_install_prompt.h"
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/browser/extensions/extension_uninstall_dialog.h"
-#include "chrome/browser/extensions/extension_warning_service.h"
#include "chrome/browser/extensions/requirements_checker.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/notification_observer.h"
@@ -26,6 +25,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_prefs_observer.h"
#include "extensions/browser/extension_registry_observer.h"
+#include "extensions/browser/warning_service.h"
#include "url/gurl.h"
class ExtensionService;
@@ -74,7 +74,7 @@
public ExtensionPrefsObserver,
public ExtensionRegistryObserver,
public ExtensionUninstallDialog::Delegate,
- public ExtensionWarningService::Observer,
+ public WarningService::Observer,
public base::SupportsWeakPtr<ExtensionSettingsHandler> {
public:
ExtensionSettingsHandler();
@@ -88,7 +88,7 @@
base::DictionaryValue* CreateExtensionDetailValue(
const Extension* extension,
const std::vector<ExtensionPage>& pages,
- const ExtensionWarningService* warning_service);
+ const WarningService* warning_service);
void GetLocalizedValues(content::WebUIDataSource* source);
@@ -139,7 +139,7 @@
virtual void ExtensionUninstallAccepted() OVERRIDE;
virtual void ExtensionUninstallCanceled() OVERRIDE;
- // ExtensionWarningService::Observer implementation.
+ // WarningService::Observer implementation.
virtual void ExtensionWarningsChanged() OVERRIDE;
// ExtensionInstallPrompt::Delegate implementation.
@@ -286,7 +286,7 @@
// The UI for showing what permissions the extension has.
scoped_ptr<ExtensionInstallPrompt> prompt_;
- ScopedObserver<ExtensionWarningService, ExtensionWarningService::Observer>
+ ScopedObserver<WarningService, WarningService::Observer>
warning_service_observer_;
// An observer to listen for when Extension errors are reported.
diff --git a/chrome/chrome_browser_extensions.gypi b/chrome/chrome_browser_extensions.gypi
index 5024a7f5..1c3a89e6 100644
--- a/chrome/chrome_browser_extensions.gypi
+++ b/chrome/chrome_browser_extensions.gypi
@@ -760,10 +760,6 @@
'browser/extensions/extension_view_host_mac.mm',
'browser/extensions/extension_warning_badge_service.cc',
'browser/extensions/extension_warning_badge_service.h',
- 'browser/extensions/extension_warning_service.cc',
- 'browser/extensions/extension_warning_service.h',
- 'browser/extensions/extension_warning_set.cc',
- 'browser/extensions/extension_warning_set.h',
'browser/extensions/extension_web_ui.cc',
'browser/extensions/extension_web_ui.h',
'browser/extensions/extension_web_ui_override_registrar.cc',
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 3dc3704..70cd9ea5 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -953,7 +953,6 @@
'browser/extensions/extension_toolbar_model_unittest.cc',
'browser/extensions/extension_ui_unittest.cc',
'browser/extensions/extension_warning_badge_service_unittest.cc',
- 'browser/extensions/extension_warning_service_unittest.cc',
'browser/extensions/extension_web_ui_unittest.cc',
'browser/extensions/external_policy_loader_unittest.cc',
'browser/extensions/external_provider_impl_unittest.cc',
diff --git a/chrome/common/extensions/chrome_extensions_client.cc b/chrome/common/extensions/chrome_extensions_client.cc
index 80befd80..d29b353 100644
--- a/chrome/common/extensions/chrome_extensions_client.cc
+++ b/chrome/common/extensions/chrome_extensions_client.cc
@@ -11,6 +11,7 @@
#include "chrome/common/extensions/features/chrome_channel_feature_filter.h"
#include "chrome/common/extensions/features/feature_channel.h"
#include "chrome/common/url_constants.h"
+#include "chrome/grit/chromium_strings.h"
#include "chrome/grit/common_resources.h"
#include "chrome/grit/generated_resources.h"
#include "content/public/common/url_constants.h"
@@ -100,6 +101,10 @@
return permission_message_provider_;
}
+const std::string ChromeExtensionsClient::GetProductName() {
+ return l10n_util::GetStringUTF8(IDS_PRODUCT_NAME);
+}
+
scoped_ptr<FeatureProvider> ChromeExtensionsClient::CreateFeatureProvider(
const std::string& name) const {
scoped_ptr<FeatureProvider> provider;
diff --git a/chrome/common/extensions/chrome_extensions_client.h b/chrome/common/extensions/chrome_extensions_client.h
index 03474f5..27a3e2cb 100644
--- a/chrome/common/extensions/chrome_extensions_client.h
+++ b/chrome/common/extensions/chrome_extensions_client.h
@@ -26,6 +26,7 @@
virtual const PermissionMessageProvider& GetPermissionMessageProvider() const
OVERRIDE;
+ virtual const std::string GetProductName() OVERRIDE;
virtual scoped_ptr<FeatureProvider> CreateFeatureProvider(
const std::string& name) const OVERRIDE;
virtual scoped_ptr<JSONFeatureProviderSource> CreateFeatureProviderSource(
diff --git a/extensions/browser/extension_system.h b/extensions/browser/extension_system.h
index 3f297ee..4f8dc84 100644
--- a/extensions/browser/extension_system.h
+++ b/extensions/browser/extension_system.h
@@ -32,7 +32,6 @@
class EventRouter;
class Extension;
class ExtensionSet;
-class ExtensionWarningService;
class InfoMap;
class InstallVerifier;
class LazyBackgroundTaskQueue;
@@ -43,6 +42,7 @@
class RuntimeData;
class SharedUserScriptMaster;
class StateStore;
+class WarningService;
// ExtensionSystem manages the lifetime of many of the services used by the
// extensions and apps system, and it handles startup and shutdown as needed.
@@ -94,8 +94,8 @@
// The EventRouter is created at startup.
virtual EventRouter* event_router() = 0;
- // The ExtensionWarningService is created at startup.
- virtual ExtensionWarningService* warning_service() = 0;
+ // The WarningService is created at startup.
+ virtual WarningService* warning_service() = 0;
// The blacklist is created at startup.
virtual Blacklist* blacklist() = 0;
diff --git a/extensions/browser/mock_extension_system.cc b/extensions/browser/mock_extension_system.cc
index d11c398d..8e1902f 100644
--- a/extensions/browser/mock_extension_system.cc
+++ b/extensions/browser/mock_extension_system.cc
@@ -62,7 +62,7 @@
return NULL;
}
-ExtensionWarningService* MockExtensionSystem::warning_service() {
+WarningService* MockExtensionSystem::warning_service() {
return NULL;
}
diff --git a/extensions/browser/mock_extension_system.h b/extensions/browser/mock_extension_system.h
index 4b227bd8..7a500dc 100644
--- a/extensions/browser/mock_extension_system.h
+++ b/extensions/browser/mock_extension_system.h
@@ -37,7 +37,7 @@
virtual InfoMap* info_map() OVERRIDE;
virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE;
virtual EventRouter* event_router() OVERRIDE;
- virtual ExtensionWarningService* warning_service() OVERRIDE;
+ virtual WarningService* warning_service() OVERRIDE;
virtual Blacklist* blacklist() OVERRIDE;
virtual ErrorConsole* error_console() OVERRIDE;
virtual InstallVerifier* install_verifier() OVERRIDE;
diff --git a/extensions/browser/warning_service.cc b/extensions/browser/warning_service.cc
new file mode 100644
index 0000000..a6fba18
--- /dev/null
+++ b/extensions/browser/warning_service.cc
@@ -0,0 +1,127 @@
+// Copyright (c) 2012 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.
+
+#include "extensions/browser/warning_service.h"
+
+#include "content/public/browser/browser_thread.h"
+#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_system.h"
+#include "extensions/browser/extensions_browser_client.h"
+#include "extensions/common/extension_set.h"
+
+using content::BrowserThread;
+
+namespace extensions {
+
+WarningService::WarningService(content::BrowserContext* browser_context)
+ : browser_context_(browser_context), extension_registry_observer_(this) {
+ DCHECK(CalledOnValidThread());
+ if (browser_context_) {
+ extension_registry_observer_.Add(ExtensionRegistry::Get(
+ ExtensionsBrowserClient::Get()->GetOriginalContext(browser_context_)));
+ }
+}
+
+WarningService::~WarningService() {}
+
+void WarningService::ClearWarnings(
+ const std::set<Warning::WarningType>& types) {
+ DCHECK(CalledOnValidThread());
+ bool deleted_anything = false;
+ for (WarningSet::iterator i = warnings_.begin();
+ i != warnings_.end();) {
+ if (types.find(i->warning_type()) != types.end()) {
+ deleted_anything = true;
+ warnings_.erase(i++);
+ } else {
+ ++i;
+ }
+ }
+
+ if (deleted_anything)
+ NotifyWarningsChanged();
+}
+
+std::set<Warning::WarningType> WarningService::
+ GetWarningTypesAffectingExtension(const std::string& extension_id) const {
+ DCHECK(CalledOnValidThread());
+ std::set<Warning::WarningType> result;
+ for (WarningSet::const_iterator i = warnings_.begin();
+ i != warnings_.end(); ++i) {
+ if (i->extension_id() == extension_id)
+ result.insert(i->warning_type());
+ }
+ return result;
+}
+
+std::vector<std::string> WarningService::GetWarningMessagesForExtension(
+ const std::string& extension_id) const {
+ DCHECK(CalledOnValidThread());
+ std::vector<std::string> result;
+
+ const ExtensionSet& extension_set =
+ ExtensionRegistry::Get(browser_context_)->enabled_extensions();
+
+ for (WarningSet::const_iterator i = warnings_.begin();
+ i != warnings_.end(); ++i) {
+ if (i->extension_id() == extension_id)
+ result.push_back(i->GetLocalizedMessage(&extension_set));
+ }
+ return result;
+}
+
+void WarningService::AddWarnings(const WarningSet& warnings) {
+ DCHECK(CalledOnValidThread());
+ size_t old_size = warnings_.size();
+
+ warnings_.insert(warnings.begin(), warnings.end());
+
+ if (old_size != warnings_.size())
+ NotifyWarningsChanged();
+}
+
+// static
+void WarningService::NotifyWarningsOnUI(
+ void* profile_id,
+ const WarningSet& warnings) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ content::BrowserContext* browser_context =
+ reinterpret_cast<content::BrowserContext*>(profile_id);
+
+ if (!browser_context ||
+ !ExtensionsBrowserClient::Get() ||
+ !ExtensionsBrowserClient::Get()->IsValidContext(browser_context)) {
+ return;
+ }
+
+ WarningService* warning_service =
+ ExtensionSystem::Get(browser_context)->warning_service();
+
+ warning_service->AddWarnings(warnings);
+}
+
+void WarningService::AddObserver(Observer* observer) {
+ observer_list_.AddObserver(observer);
+}
+
+void WarningService::RemoveObserver(Observer* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
+void WarningService::NotifyWarningsChanged() {
+ FOR_EACH_OBSERVER(Observer, observer_list_, ExtensionWarningsChanged());
+}
+
+void WarningService::OnExtensionUnloaded(
+ content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
+ // Unloading one extension might have solved the problems of others.
+ // Therefore, we clear warnings of this type for all extensions.
+ std::set<Warning::WarningType> warning_types =
+ GetWarningTypesAffectingExtension(extension->id());
+ ClearWarnings(warning_types);
+}
+
+} // namespace extensions
diff --git a/chrome/browser/extensions/extension_warning_service.h b/extensions/browser/warning_service.h
similarity index 63%
rename from chrome/browser/extensions/extension_warning_service.h
rename to extensions/browser/warning_service.h
index c311859d..f675e1f 100644
--- a/chrome/browser/extensions/extension_warning_service.h
+++ b/extensions/browser/warning_service.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SERVICE_H_
-#define CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SERVICE_H_
+#ifndef EXTENSIONS_BROWSER_WARNING_SERVICE_H_
+#define EXTENSIONS_BROWSER_WARNING_SERVICE_H_
#include <set>
#include <string>
@@ -12,14 +12,13 @@
#include "base/observer_list.h"
#include "base/scoped_observer.h"
#include "base/threading/non_thread_safe.h"
-#include "chrome/browser/extensions/extension_warning_set.h"
#include "extensions/browser/extension_registry_observer.h"
+#include "extensions/browser/warning_set.h"
// TODO(battre) Remove the Extension prefix.
-class Profile;
-
namespace content {
+class BrowserContext;
class NotificationDetails;
class NotificationSource;
}
@@ -32,40 +31,39 @@
// conflicting modifications of network requests by extensions, slow extensions,
// etc.) trigger a warning badge in the UI and and provide means to resolve
// them. This class must be used on the UI thread only.
-class ExtensionWarningService : public ExtensionRegistryObserver,
- public base::NonThreadSafe {
+class WarningService : public ExtensionRegistryObserver,
+ public base::NonThreadSafe {
public:
class Observer {
public:
virtual void ExtensionWarningsChanged() = 0;
};
- // |profile| may be NULL for testing. In this case, be sure to not insert
- // any warnings.
- explicit ExtensionWarningService(Profile* profile);
- virtual ~ExtensionWarningService();
+ // |browser_context| may be NULL for testing. In this case, be sure to not
+ // insert any warnings.
+ explicit WarningService(content::BrowserContext* browser_context);
+ virtual ~WarningService();
// Clears all warnings of types contained in |types| and notifies observers
// of the changed warnings.
- void ClearWarnings(const std::set<ExtensionWarning::WarningType>& types);
+ void ClearWarnings(const std::set<Warning::WarningType>& types);
// Returns all types of warnings effecting extension |extension_id|.
- std::set<ExtensionWarning::WarningType> GetWarningTypesAffectingExtension(
+ std::set<Warning::WarningType> GetWarningTypesAffectingExtension(
const std::string& extension_id) const;
// Returns all localized warnings for extension |extension_id| in |result|.
std::vector<std::string> GetWarningMessagesForExtension(
const std::string& extension_id) const;
- const ExtensionWarningSet& warnings() const { return warnings_; }
+ const WarningSet& warnings() const { return warnings_; }
// Adds a set of warnings and notifies observers if any warning is new.
- void AddWarnings(const ExtensionWarningSet& warnings);
+ void AddWarnings(const WarningSet& warnings);
- // Notifies the ExtensionWarningService of profile |profile_id| that new
- // |warnings| occurred and triggers a warning badge.
- static void NotifyWarningsOnUI(void* profile_id,
- const ExtensionWarningSet& warnings);
+ // Notifies the WarningService of browser_context |browser_context_id| that
+ // new |warnings| occurred and triggers a warning badge.
+ static void NotifyWarningsOnUI(void* profile_id, const WarningSet& warnings);
void AddObserver(Observer* observer);
void RemoveObserver(Observer* observer);
@@ -80,9 +78,9 @@
OVERRIDE;
// Currently existing warnings.
- ExtensionWarningSet warnings_;
+ WarningSet warnings_;
- Profile* profile_;
+ content::BrowserContext* const browser_context_;
// Listen to extension unloaded notifications.
ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
@@ -93,4 +91,4 @@
} // namespace extensions
-#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SERVICE_H_
+#endif // EXTENSIONS_BROWSER_WARNING_SERVICE_H_
diff --git a/chrome/browser/extensions/extension_warning_service_unittest.cc b/extensions/browser/warning_service_unittest.cc
similarity index 63%
rename from chrome/browser/extensions/extension_warning_service_unittest.cc
rename to extensions/browser/warning_service_unittest.cc
index 7ad5b82b..96bb898c 100644
--- a/chrome/browser/extensions/extension_warning_service_unittest.cc
+++ b/extensions/browser/warning_service_unittest.cc
@@ -2,12 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/extensions/extension_warning_service.h"
+#include "extensions/browser/warning_service.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/global_error/global_error_service.h"
-#include "chrome/browser/ui/global_error/global_error_service_factory.h"
-#include "chrome/test/base/testing_profile.h"
+#include "content/public/test/test_browser_context.h"
+#include "extensions/browser/extensions_test.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -15,52 +13,54 @@
namespace {
-class TestExtensionWarningService : public ExtensionWarningService {
+class TestWarningService : public WarningService {
public:
- explicit TestExtensionWarningService(Profile* profile)
- : ExtensionWarningService(profile) {
+ explicit TestWarningService(content::BrowserContext* browser_context)
+ : WarningService(browser_context) {
}
- virtual ~TestExtensionWarningService() {}
+ virtual ~TestWarningService() {}
- void AddWarning(const ExtensionWarning& warning) {
- ExtensionWarningSet warnings;
+ void AddWarning(const Warning& warning) {
+ WarningSet warnings;
warnings.insert(warning);
AddWarnings(warnings);
}
};
-class MockObserver : public ExtensionWarningService::Observer {
+class MockObserver : public WarningService::Observer {
public:
virtual ~MockObserver() {}
MOCK_METHOD0(ExtensionWarningsChanged, void());
};
+typedef ExtensionsTest WarningServiceTest;
+
const char* ext1_id = "extension1";
const char* ext2_id = "extension2";
-const ExtensionWarning::WarningType warning_1 =
- ExtensionWarning::kNetworkDelay;
-const ExtensionWarning::WarningType warning_2 =
- ExtensionWarning::kNetworkConflict;
+const Warning::WarningType warning_1 =
+ Warning::kNetworkDelay;
+const Warning::WarningType warning_2 =
+ Warning::kNetworkConflict;
} // namespace
// Check that inserting a warning triggers notifications, whereas inserting
// the same warning again is silent.
-TEST(ExtensionWarningServiceTest, SetWarning) {
- TestingProfile profile;
- TestExtensionWarningService warning_service(&profile);
+TEST_F(WarningServiceTest, SetWarning) {
+ content::TestBrowserContext browser_context;
+ TestWarningService warning_service(&browser_context);
MockObserver observer;
warning_service.AddObserver(&observer);
// Insert warning for the first time.
EXPECT_CALL(observer, ExtensionWarningsChanged());
warning_service.AddWarning(
- ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
+ Warning::CreateNetworkDelayWarning(ext1_id));
testing::Mock::VerifyAndClearExpectations(&warning_service);
// Second insertion of same warning does not trigger anything.
warning_service.AddWarning(
- ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
+ Warning::CreateNetworkDelayWarning(ext1_id));
testing::Mock::VerifyAndClearExpectations(&warning_service);
warning_service.RemoveObserver(&observer);
@@ -68,29 +68,29 @@
// Check that ClearWarnings deletes exactly the specified warnings and
// triggers notifications where appropriate.
-TEST(ExtensionWarningServiceTest, ClearWarnings) {
- TestingProfile profile;
- TestExtensionWarningService warning_service(&profile);
+TEST_F(WarningServiceTest, ClearWarnings) {
+ content::TestBrowserContext browser_context;
+ TestWarningService warning_service(&browser_context);
MockObserver observer;
warning_service.AddObserver(&observer);
// Insert two unique warnings in one batch.
EXPECT_CALL(observer, ExtensionWarningsChanged());
- ExtensionWarningSet warning_set;
- warning_set.insert(ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
- warning_set.insert(ExtensionWarning::CreateNetworkConflictWarning(ext2_id));
+ WarningSet warning_set;
+ warning_set.insert(Warning::CreateNetworkDelayWarning(ext1_id));
+ warning_set.insert(Warning::CreateNetworkConflictWarning(ext2_id));
warning_service.AddWarnings(warning_set);
testing::Mock::VerifyAndClearExpectations(&warning_service);
// Remove one warning and check that the badge remains.
EXPECT_CALL(observer, ExtensionWarningsChanged());
- std::set<ExtensionWarning::WarningType> to_clear;
+ std::set<Warning::WarningType> to_clear;
to_clear.insert(warning_2);
warning_service.ClearWarnings(to_clear);
testing::Mock::VerifyAndClearExpectations(&warning_service);
// Check that the correct warnings appear in |warnings|.
- std::set<ExtensionWarning::WarningType> existing_warnings =
+ std::set<Warning::WarningType> existing_warnings =
warning_service.GetWarningTypesAffectingExtension(ext1_id);
EXPECT_EQ(1u, existing_warnings.size());
existing_warnings =
diff --git a/chrome/browser/extensions/extension_warning_set.cc b/extensions/browser/warning_set.cc
similarity index 79%
rename from chrome/browser/extensions/extension_warning_set.cc
rename to extensions/browser/warning_set.cc
index a7bf671..63dc550 100644
--- a/chrome/browser/extensions/extension_warning_set.cc
+++ b/extensions/browser/warning_set.cc
@@ -2,17 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/extensions/extension_warning_set.h"
+#include "extensions/browser/warning_set.h"
#include "base/files/file_path.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/grit/chromium_strings.h"
-#include "chrome/grit/generated_resources.h"
#include "content/public/browser/browser_thread.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_set.h"
+#include "extensions/common/extensions_client.h"
+#include "extensions/strings/grit/extensions_strings.h"
#include "net/base/escape.h"
#include "ui/base/l10n/l10n_util.h"
@@ -28,10 +27,10 @@
namespace extensions {
//
-// ExtensionWarning
+// Warning
//
-ExtensionWarning::ExtensionWarning(
+Warning::Warning(
WarningType type,
const std::string& extension_id,
int message_id,
@@ -47,16 +46,16 @@
CHECK_LE(message_parameters.size(), kMaxNumberOfParameters);
}
-ExtensionWarning::ExtensionWarning(const ExtensionWarning& other)
+Warning::Warning(const Warning& other)
: type_(other.type_),
extension_id_(other.extension_id_),
message_id_(other.message_id_),
message_parameters_(other.message_parameters_) {}
-ExtensionWarning::~ExtensionWarning() {
+Warning::~Warning() {
}
-ExtensionWarning& ExtensionWarning::operator=(const ExtensionWarning& other) {
+Warning& Warning::operator=(const Warning& other) {
type_ = other.type_;
extension_id_ = other.extension_id_;
message_id_ = other.message_id_;
@@ -65,11 +64,11 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateNetworkDelayWarning(
+Warning Warning::CreateNetworkDelayWarning(
const std::string& extension_id) {
std::vector<std::string> message_parameters;
- message_parameters.push_back(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME));
- return ExtensionWarning(
+ message_parameters.push_back(ExtensionsClient::Get()->GetProductName());
+ return Warning(
kNetworkDelay,
extension_id,
IDS_EXTENSION_WARNINGS_NETWORK_DELAY,
@@ -77,10 +76,9 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateNetworkConflictWarning(
- const std::string& extension_id) {
+Warning Warning::CreateNetworkConflictWarning(const std::string& extension_id) {
std::vector<std::string> message_parameters;
- return ExtensionWarning(
+ return Warning(
kNetworkConflict,
extension_id,
IDS_EXTENSION_WARNINGS_NETWORK_CONFLICT,
@@ -88,7 +86,7 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateRedirectConflictWarning(
+Warning Warning::CreateRedirectConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id,
const GURL& attempted_redirect_url,
@@ -97,7 +95,7 @@
message_parameters.push_back(attempted_redirect_url.spec());
message_parameters.push_back(kTranslate + winning_extension_id);
message_parameters.push_back(winning_redirect_url.spec());
- return ExtensionWarning(
+ return Warning(
kRedirectConflict,
extension_id,
IDS_EXTENSION_WARNINGS_REDIRECT_CONFLICT,
@@ -105,14 +103,14 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateRequestHeaderConflictWarning(
+Warning Warning::CreateRequestHeaderConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id,
const std::string& conflicting_header) {
std::vector<std::string> message_parameters;
message_parameters.push_back(conflicting_header);
message_parameters.push_back(kTranslate + winning_extension_id);
- return ExtensionWarning(
+ return Warning(
kNetworkConflict,
extension_id,
IDS_EXTENSION_WARNINGS_REQUEST_HEADER_CONFLICT,
@@ -120,14 +118,14 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateResponseHeaderConflictWarning(
+Warning Warning::CreateResponseHeaderConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id,
const std::string& conflicting_header) {
std::vector<std::string> message_parameters;
message_parameters.push_back(conflicting_header);
message_parameters.push_back(kTranslate + winning_extension_id);
- return ExtensionWarning(
+ return Warning(
kNetworkConflict,
extension_id,
IDS_EXTENSION_WARNINGS_RESPONSE_HEADER_CONFLICT,
@@ -135,12 +133,12 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateCredentialsConflictWarning(
+Warning Warning::CreateCredentialsConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id) {
std::vector<std::string> message_parameters;
message_parameters.push_back(kTranslate + winning_extension_id);
- return ExtensionWarning(
+ return Warning(
kNetworkConflict,
extension_id,
IDS_EXTENSION_WARNINGS_CREDENTIALS_CONFLICT,
@@ -148,11 +146,11 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateRepeatedCacheFlushesWarning(
+Warning Warning::CreateRepeatedCacheFlushesWarning(
const std::string& extension_id) {
std::vector<std::string> message_parameters;
- message_parameters.push_back(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME));
- return ExtensionWarning(
+ message_parameters.push_back(ExtensionsClient::Get()->GetProductName());
+ return Warning(
kRepeatedCacheFlushes,
extension_id,
IDS_EXTENSION_WARNINGS_NETWORK_DELAY,
@@ -160,7 +158,7 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateDownloadFilenameConflictWarning(
+Warning Warning::CreateDownloadFilenameConflictWarning(
const std::string& losing_extension_id,
const std::string& winning_extension_id,
const base::FilePath& losing_filename,
@@ -171,7 +169,7 @@
message_parameters.push_back(kTranslate + winning_extension_id);
message_parameters.push_back(base::UTF16ToUTF8(
winning_filename.LossyDisplayName()));
- return ExtensionWarning(
+ return Warning(
kDownloadFilenameConflict,
losing_extension_id,
IDS_EXTENSION_WARNINGS_DOWNLOAD_FILENAME_CONFLICT,
@@ -179,17 +177,16 @@
}
// static
-ExtensionWarning ExtensionWarning::CreateReloadTooFrequentWarning(
+Warning Warning::CreateReloadTooFrequentWarning(
const std::string& extension_id) {
std::vector<std::string> message_parameters;
- return ExtensionWarning(kReloadTooFrequent,
+ return Warning(kReloadTooFrequent,
extension_id,
IDS_EXTENSION_WARNING_RELOAD_TOO_FREQUENT,
message_parameters);
}
-std::string ExtensionWarning::GetLocalizedMessage(
- const ExtensionSet* extensions) const {
+std::string Warning::GetLocalizedMessage(const ExtensionSet* extensions) const {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// These parameters may be unsafe (URLs and Extension names) and need
@@ -228,7 +225,7 @@
}
}
-bool operator<(const ExtensionWarning& a, const ExtensionWarning& b) {
+bool operator<(const Warning& a, const Warning& b) {
if (a.extension_id() != b.extension_id())
return a.extension_id() < b.extension_id();
return a.warning_type() < b.warning_type();
diff --git a/chrome/browser/extensions/extension_warning_set.h b/extensions/browser/warning_set.h
similarity index 67%
rename from chrome/browser/extensions/extension_warning_set.h
rename to extensions/browser/warning_set.h
index 2d7d0347..015c98ae 100644
--- a/chrome/browser/extensions/extension_warning_set.h
+++ b/extensions/browser/warning_set.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SET_H_
-#define CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SET_H_
+#ifndef EXTENSIONS_BROWSER_WARNING_SET_H_
+#define EXTENSIONS_BROWSER_WARNING_SET_H_
#include <set>
#include <string>
@@ -11,8 +11,6 @@
#include "url/gurl.h"
-// TODO(battre) Remove the Extension prefix.
-
namespace base {
class FilePath;
}
@@ -21,10 +19,10 @@
class ExtensionSet;
-// This class is used by the ExtensionWarningService to represent warnings if
-// extensions misbehave. Note that the ExtensionWarningService deals only with
-// specific warnings that should trigger a badge on the Chrome menu button.
-class ExtensionWarning {
+// This class is used by the WarningService to represent warnings if extensions
+// misbehave. Note that the WarningService deals only with specific warnings
+// that should trigger a badge on the Chrome menu button.
+class Warning {
public:
enum WarningType {
// Don't use this, it is only intended for the default constructor and
@@ -48,41 +46,40 @@
kMaxWarningType
};
- // We allow copy&assign for passing containers of ExtensionWarnings between
- // threads.
- ExtensionWarning(const ExtensionWarning& other);
- ~ExtensionWarning();
- ExtensionWarning& operator=(const ExtensionWarning& other);
+ // We allow copy&assign for passing containers of Warnings between threads.
+ Warning(const Warning& other);
+ ~Warning();
+ Warning& operator=(const Warning& other);
// Factory methods for various warning types.
- static ExtensionWarning CreateNetworkDelayWarning(
+ static Warning CreateNetworkDelayWarning(
const std::string& extension_id);
- static ExtensionWarning CreateNetworkConflictWarning(
+ static Warning CreateNetworkConflictWarning(
const std::string& extension_id);
- static ExtensionWarning CreateRedirectConflictWarning(
+ static Warning CreateRedirectConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id,
const GURL& attempted_redirect_url,
const GURL& winning_redirect_url);
- static ExtensionWarning CreateRequestHeaderConflictWarning(
+ static Warning CreateRequestHeaderConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id,
const std::string& conflicting_header);
- static ExtensionWarning CreateResponseHeaderConflictWarning(
+ static Warning CreateResponseHeaderConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id,
const std::string& conflicting_header);
- static ExtensionWarning CreateCredentialsConflictWarning(
+ static Warning CreateCredentialsConflictWarning(
const std::string& extension_id,
const std::string& winning_extension_id);
- static ExtensionWarning CreateRepeatedCacheFlushesWarning(
+ static Warning CreateRepeatedCacheFlushesWarning(
const std::string& extension_id);
- static ExtensionWarning CreateDownloadFilenameConflictWarning(
+ static Warning CreateDownloadFilenameConflictWarning(
const std::string& losing_extension_id,
const std::string& winning_extension_id,
const base::FilePath& losing_filename,
const base::FilePath& winning_filename);
- static ExtensionWarning CreateReloadTooFrequentWarning(
+ static Warning CreateReloadTooFrequentWarning(
const std::string& extension_id);
// Returns the specific warning type.
@@ -99,7 +96,7 @@
// could indicate for example the fact that an extension conflicted with
// others. The |message_id| refers to an IDS_ string ID. The
// |message_parameters| are filled into the message template.
- ExtensionWarning(WarningType type,
+ Warning(WarningType type,
const std::string& extension_id,
int message_id,
const std::vector<std::string>& message_parameters);
@@ -112,13 +109,13 @@
std::vector<std::string> message_parameters_;
};
-// Compare ExtensionWarnings based on the tuple of (extension_id, type).
-// The message associated with ExtensionWarnings is purely informational
+// Compare Warnings based on the tuple of (extension_id, type).
+// The message associated with Warnings is purely informational
// and does not contribute to distinguishing extensions.
-bool operator<(const ExtensionWarning& a, const ExtensionWarning& b);
+bool operator<(const Warning& a, const Warning& b);
-typedef std::set<ExtensionWarning> ExtensionWarningSet;
+typedef std::set<Warning> WarningSet;
} // namespace extensions
-#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_WARNING_SET_H_
+#endif // EXTENSIONS_BROWSER_WARNING_SET_H_
diff --git a/extensions/common/extensions_client.h b/extensions/common/extensions_client.h
index 9f4ebf9..623a2de 100644
--- a/extensions/common/extensions_client.h
+++ b/extensions/common/extensions_client.h
@@ -45,6 +45,9 @@
virtual const PermissionMessageProvider& GetPermissionMessageProvider()
const = 0;
+ // Returns the application name. For example, "Chromium" or "app_shell".
+ virtual const std::string GetProductName() = 0;
+
// Create a FeatureProvider for a specific feature type, e.g. "permission".
virtual scoped_ptr<FeatureProvider> CreateFeatureProvider(
const std::string& name) const = 0;
diff --git a/extensions/extensions.gyp b/extensions/extensions.gyp
index 09446e5..16cddcc 100644
--- a/extensions/extensions.gyp
+++ b/extensions/extensions.gyp
@@ -554,6 +554,10 @@
'browser/verified_contents.h',
'browser/view_type_utils.cc',
'browser/view_type_utils.h',
+ 'browser/warning_service.cc',
+ 'browser/warning_service.h',
+ 'browser/warning_set.cc',
+ 'browser/warning_set.h',
],
'conditions': [
['enable_extensions==0', {
@@ -931,6 +935,7 @@
'browser/value_store/value_store_unittest.cc',
'browser/value_store/value_store_unittest.h',
'browser/verified_contents_unittest.cc',
+ 'browser/warning_service_unittest.cc',
'common/api/sockets/sockets_manifest_permission_unittest.cc',
'common/csp_validator_unittest.cc',
'common/event_filter_unittest.cc',
diff --git a/extensions/extensions_strings.grd b/extensions/extensions_strings.grd
index 3b3d1ce..603e99f 100644
--- a/extensions/extensions_strings.grd
+++ b/extensions/extensions_strings.grd
@@ -306,6 +306,33 @@
<message name="IDS_EXTENSION_TASK_MANAGER_WEBVIEW_TAG_PREFIX" desc="The prefix for a guest page loaded in a webview tag in the Task Manager">
Webview: <ph name="WEBVIEW_TAG_NAME">$1<ex>Google</ex></ph>
</message>
+
+ <!-- Global error messages for extensions. Please keep alphabetized. -->
+ <message name="IDS_EXTENSION_WARNINGS_NETWORK_DELAY" desc="Warning message indicating that an extension caused excessive network delays for web requests">
+ This extension is slowing down <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. You should disable it to restore <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s performance.
+ </message>
+ <message name="IDS_EXTENSION_WARNINGS_NETWORK_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
+ This extension failed to modify a network request because the modification conflicted with another extension.
+ </message>
+ <message name="IDS_EXTENSION_WARNINGS_REDIRECT_CONFLICT" desc="Warning message indicating that two extensions tried to redirect to different destinations">
+ This extension failed to redirect a network request to <ph name="ATTEMPTED_REDIRECT_DESTINATION">$1<ex>http://www.google.com</ex></ph> because another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>) redirected it to <ph name="ACTUAL_REDIRECT_DESTINATION">$3<ex>https://www.google.com</ex></ph>.
+ </message>
+ <message name="IDS_EXTENSION_WARNINGS_REQUEST_HEADER_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
+ This extension failed to modify the request header "<ph name="HEADER_NAME">$1<ex>User-Agent</ex></ph>" of a network request because the modification conflicted with another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>).
+ </message>
+ <message name="IDS_EXTENSION_WARNINGS_RESPONSE_HEADER_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
+ This extension failed to modify the response header "<ph name="HEADER_NAME">$1<ex>User-Agents</ex></ph>" of a network request because the modification conflicted with another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>).
+ </message>
+ <message name="IDS_EXTENSION_WARNINGS_CREDENTIALS_CONFLICT" desc="Warning message which indicates that two or more extensions tried to modify a network request in a conflicting way and the modification of this extension was ignored">
+ This extension failed to provide credentials to a network request because another extension (<ph name="EXTENSION_NAME">$1<ex>My Cool Extension</ex></ph>) provided different credentials.
+ </message>
+ <message name="IDS_EXTENSION_WARNINGS_DOWNLOAD_FILENAME_CONFLICT" desc="Warning message which indicates that two or more extensions tried to determine the filename of a downloaded file in a conflicting way and the modification of this extension was ignored">
+ This extension failed to name the download "<ph name="ATTEMPTED_FILENAME">$1<ex>apple.png</ex></ph>" because another extension (<ph name="EXTENSION_NAME">$2<ex>My Cool Extension</ex></ph>) determined a different filename "<ph name="ACTUAL_FILENAME">$3<ex>banana.png</ex></ph>".
+ </message>
+ <message name="IDS_EXTENSION_WARNING_RELOAD_TOO_FREQUENT" desc="Warning message which indates that an extension got stuck in a reload loop.">
+ This extension reloaded itself too frequently.
+ </message>
+
</messages>
</release>
</grit>
diff --git a/extensions/shell/browser/shell_extension_system.cc b/extensions/shell/browser/shell_extension_system.cc
index f038807..4598e39 100644
--- a/extensions/shell/browser/shell_extension_system.cc
+++ b/extensions/shell/browser/shell_extension_system.cc
@@ -142,7 +142,7 @@
return event_router_.get();
}
-ExtensionWarningService* ShellExtensionSystem::warning_service() {
+WarningService* ShellExtensionSystem::warning_service() {
return NULL;
}
diff --git a/extensions/shell/browser/shell_extension_system.h b/extensions/shell/browser/shell_extension_system.h
index 966bfaf8..b8ed570 100644
--- a/extensions/shell/browser/shell_extension_system.h
+++ b/extensions/shell/browser/shell_extension_system.h
@@ -61,7 +61,7 @@
virtual InfoMap* info_map() OVERRIDE;
virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE;
virtual EventRouter* event_router() OVERRIDE;
- virtual ExtensionWarningService* warning_service() OVERRIDE;
+ virtual WarningService* warning_service() OVERRIDE;
virtual Blacklist* blacklist() OVERRIDE;
virtual ErrorConsole* error_console() OVERRIDE;
virtual InstallVerifier* install_verifier() OVERRIDE;
diff --git a/extensions/shell/common/shell_extensions_client.cc b/extensions/shell/common/shell_extensions_client.cc
index 0c5844f..00362195 100644
--- a/extensions/shell/common/shell_extensions_client.cc
+++ b/extensions/shell/common/shell_extensions_client.cc
@@ -104,6 +104,10 @@
return g_permission_message_provider.Get();
}
+const std::string ShellExtensionsClient::GetProductName() {
+ return "app_shell";
+}
+
scoped_ptr<FeatureProvider> ShellExtensionsClient::CreateFeatureProvider(
const std::string& name) const {
scoped_ptr<FeatureProvider> provider;
diff --git a/extensions/shell/common/shell_extensions_client.h b/extensions/shell/common/shell_extensions_client.h
index 81c5c60..10e6f20f 100644
--- a/extensions/shell/common/shell_extensions_client.h
+++ b/extensions/shell/common/shell_extensions_client.h
@@ -22,6 +22,7 @@
virtual void Initialize() OVERRIDE;
virtual const PermissionMessageProvider& GetPermissionMessageProvider()
const OVERRIDE;
+ virtual const std::string GetProductName() OVERRIDE;
virtual scoped_ptr<FeatureProvider> CreateFeatureProvider(
const std::string& name) const OVERRIDE;
virtual scoped_ptr<JSONFeatureProviderSource> CreateFeatureProviderSource(
diff --git a/extensions/test/test_extensions_client.cc b/extensions/test/test_extensions_client.cc
index fc0391a..a47e60e 100644
--- a/extensions/test/test_extensions_client.cc
+++ b/extensions/test/test_extensions_client.cc
@@ -55,6 +55,10 @@
return provider;
}
+const std::string TestExtensionsClient::GetProductName() {
+ return "extensions_test";
+}
+
scoped_ptr<FeatureProvider> TestExtensionsClient::CreateFeatureProvider(
const std::string& name) const {
scoped_ptr<FeatureProvider> provider;
diff --git a/extensions/test/test_extensions_client.h b/extensions/test/test_extensions_client.h
index be2acd7..6c6f7e5 100644
--- a/extensions/test/test_extensions_client.h
+++ b/extensions/test/test_extensions_client.h
@@ -19,6 +19,7 @@
virtual void Initialize() OVERRIDE;
virtual const PermissionMessageProvider& GetPermissionMessageProvider() const
OVERRIDE;
+ virtual const std::string GetProductName() OVERRIDE;
virtual scoped_ptr<FeatureProvider> CreateFeatureProvider(
const std::string& name) const OVERRIDE;
virtual scoped_ptr<JSONFeatureProviderSource> CreateFeatureProviderSource(