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

Unified Diff: chrome/browser/extensions/api/web_request/web_request_api.cc

Issue 10407105: Improve error messaging of webRequest API in case of conflicts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Evan's comments Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/web_request/web_request_api.cc
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 ac1140542d4496da6935e1d3f792324cc292bb25..34d012f4632a24374f74a63d1bf1a06801561433 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api.cc
@@ -7,6 +7,7 @@
#include <algorithm>
#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "base/json/json_writer.h"
#include "base/metrics/histogram.h"
#include "base/string_number_conversions.h"
@@ -29,6 +30,8 @@
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_id_map.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/browser/renderer_host/chrome_render_message_filter.h"
@@ -63,8 +66,10 @@ using content::BrowserMessageFilter;
using content::BrowserThread;
using content::ResourceRequestInfo;
using extensions::Extension;
+using extensions::ExtensionWarning;
+using extensions::ExtensionWarningService;
+using extensions::ExtensionWarningSet;
using extensions::Feature;
-
using extensions::web_navigation_api_helpers::GetFrameId;
namespace helpers = extension_web_request_api_helpers;
@@ -1390,7 +1395,7 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
bool credentials_set = false;
deltas.sort(&helpers::InDecreasingExtensionInstallationTimeOrder);
- std::set<std::string> conflicting_extensions;
+ ExtensionWarningSet warnings;
bool canceled = false;
helpers::MergeCancelOfResponses(
@@ -1403,14 +1408,14 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
helpers::MergeOnBeforeRequestResponses(
blocked_request.response_deltas,
blocked_request.new_url,
- &conflicting_extensions,
+ &warnings,
blocked_request.net_log);
} else if (blocked_request.event == kOnBeforeSendHeaders) {
CHECK(!blocked_request.callback.is_null());
helpers::MergeOnBeforeSendHeadersResponses(
blocked_request.response_deltas,
blocked_request.request_headers,
- &conflicting_extensions,
+ &warnings,
blocked_request.net_log);
} else if (blocked_request.event == kOnHeadersReceived) {
CHECK(!blocked_request.callback.is_null());
@@ -1418,7 +1423,7 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
blocked_request.response_deltas,
blocked_request.original_response_headers.get(),
blocked_request.override_response_headers,
- &conflicting_extensions,
+ &warnings,
blocked_request.net_log);
} else if (blocked_request.event == kOnAuthRequired) {
CHECK(blocked_request.callback.is_null());
@@ -1426,20 +1431,18 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
credentials_set = helpers::MergeOnAuthRequiredResponses(
blocked_request.response_deltas,
blocked_request.auth_credentials,
- &conflicting_extensions,
+ &warnings,
blocked_request.net_log);
} else {
NOTREACHED();
}
- if (!conflicting_extensions.empty()) {
+ if (!warnings.empty()) {
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
- base::Bind(&ExtensionWarningSet::NotifyWarningsOnUI,
- profile,
- conflicting_extensions,
- ExtensionWarningSet::kNetworkConflict));
+ base::Bind(&ExtensionWarningService::NotifyWarningsOnUI,
+ profile, warnings));
}
if (canceled) {
@@ -1872,15 +1875,14 @@ void WebRequestHandlerBehaviorChanged::GetQuotaLimitHeuristics(
void WebRequestHandlerBehaviorChanged::OnQuotaExceeded(
const std::string& violation_error) {
// Post warning message.
- std::set<std::string> extension_ids;
- extension_ids.insert(extension_id());
+ ExtensionWarningSet warnings;
+ warnings.insert(
+ ExtensionWarning::CreateRepeatedCacheFlushesWarning(extension_id()));
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
- base::Bind(&ExtensionWarningSet::NotifyWarningsOnUI,
- profile_id(),
- extension_ids,
- ExtensionWarningSet::kRepeatedCacheFlushes));
+ base::Bind(&ExtensionWarningService::NotifyWarningsOnUI,
+ profile_id(), warnings));
// Continue gracefully.
Run();

Powered by Google App Engine
This is Rietveld 408576698