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

Unified Diff: chrome/browser/chrome_net_benchmarking_impl.cc

Issue 2521823008: Migrate chrome_net_benchmarking_message_filter to mojo (Closed)
Patch Set: change ClearPredictorCache to run on UI thread via PostTask Created 4 years 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/chrome_net_benchmarking_impl.cc
diff --git a/chrome/browser/chrome_net_benchmarking_message_filter.cc b/chrome/browser/chrome_net_benchmarking_impl.cc
similarity index 56%
rename from chrome/browser/chrome_net_benchmarking_message_filter.cc
rename to chrome/browser/chrome_net_benchmarking_impl.cc
index ef57cf85d7d71cfc8166bd924077254023f6f51a..cdef77c34fd3eaf774cf7a89dfe5d90a6aaa380b 100644
--- a/chrome/browser/chrome_net_benchmarking_message_filter.cc
+++ b/chrome/browser/chrome_net_benchmarking_impl.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/chrome_net_benchmarking_message_filter.h"
+#include "chrome/browser/chrome_net_benchmarking_impl.h"
#include <memory>
@@ -12,8 +12,10 @@
#include "base/macros.h"
#include "chrome/browser/net/predictor.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/benchmarking_messages.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/chrome_net_benchmarking.mojom.h"
+#include "content/public/browser/browser_thread.h"
+#include "mojo/public/cpp/bindings/strong_binding.h"
#include "net/base/net_errors.h"
#include "net/disk_cache/disk_cache.h"
#include "net/dns/host_cache.h"
@@ -22,56 +24,46 @@
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
+using content::BrowserThread;
+
namespace {
-void ClearCacheCallback(ChromeNetBenchmarkingMessageFilter* filter,
- IPC::Message* reply_msg,
- int result) {
- ChromeViewHostMsg_ClearCache::WriteReplyParams(reply_msg, result);
- filter->Send(reply_msg);
+void ClearPredictorCacheOnUIThread(Profile* profile) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ // TODO(623967): Ensure that the profile or predictor are not accessed after
+ // they have been shut down.
+ chrome_browser_net::Predictor* predictor = profile->GetNetworkPredictor();
+ if (predictor)
+ predictor->DiscardAllResultsAndClearPrefsOnUIThread();
}
} // namespace
-ChromeNetBenchmarkingMessageFilter::ChromeNetBenchmarkingMessageFilter(
+ChromeNetBenchmarkingImpl::ChromeNetBenchmarkingImpl(
Profile* profile,
net::URLRequestContextGetter* request_context)
- : BrowserMessageFilter(ChromeBenchmarkingMsgStart),
- profile_(profile),
- request_context_(request_context) {
-}
+ : profile_(profile), request_context_(request_context) {}
-ChromeNetBenchmarkingMessageFilter::~ChromeNetBenchmarkingMessageFilter() {
+ChromeNetBenchmarkingImpl::~ChromeNetBenchmarkingImpl() {
}
-bool ChromeNetBenchmarkingMessageFilter::OnMessageReceived(
- const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(ChromeNetBenchmarkingMessageFilter, message)
- IPC_MESSAGE_HANDLER(ChromeViewHostMsg_CloseCurrentConnections,
- OnCloseCurrentConnections)
- IPC_MESSAGE_HANDLER_DELAY_REPLY(ChromeViewHostMsg_ClearCache, OnClearCache)
- IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ClearHostResolverCache,
- OnClearHostResolverCache)
- IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ClearPredictorCache,
- OnClearPredictorCache)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void ChromeNetBenchmarkingMessageFilter::OverrideThreadForMessage(
- const IPC::Message& message,
- content::BrowserThread::ID* thread) {
- if (message.type() == ChromeViewHostMsg_ClearPredictorCache::ID)
- *thread = content::BrowserThread::UI;
+// static
+void ChromeNetBenchmarkingImpl::Create(
+ Profile* profile,
+ net::URLRequestContextGetter* request_context,
+ chrome::mojom::ChromeNetBenchmarkingRequest request) {
+ mojo::MakeStrongBinding(
+ base::MakeUnique<ChromeNetBenchmarkingImpl>(profile, request_context),
+ std::move(request));
}
-void ChromeNetBenchmarkingMessageFilter::OnClearCache(IPC::Message* reply_msg) {
+void ChromeNetBenchmarkingImpl::ClearCache(
+ const ClearCacheCallback& callback) {
// This function is disabled unless the user has enabled
// benchmarking extensions.
if (!CheckBenchmarkingEnabled()) {
Sam McNally 2016/12/05 06:57:09 Check this in Create() instead and if not enabled,
dvallet 2016/12/07 02:21:02 Done. I've remove te NOTREACHED message since I gu
NOTREACHED() << "Received unexpected benchmarking IPC";
+ // No callback called.
return;
}
int rv = -1;
@@ -79,19 +71,16 @@ void ChromeNetBenchmarkingMessageFilter::OnClearCache(IPC::Message* reply_msg) {
disk_cache::Backend* backend = request_context_->GetURLRequestContext()->
http_transaction_factory()->GetCache()->GetCurrentBackend();
if (backend) {
- net::CompletionCallback callback =
- base::Bind(&ClearCacheCallback, base::RetainedRef(this), reply_msg);
rv = backend->DoomAllEntries(callback);
if (rv == net::ERR_IO_PENDING) {
- // The callback will send the reply.
+ // Callback is handled by backend.
return;
}
}
- ChromeViewHostMsg_ClearCache::WriteReplyParams(reply_msg, rv);
- Send(reply_msg);
+ callback.Run(rv);
}
-void ChromeNetBenchmarkingMessageFilter::OnClearHostResolverCache() {
+void ChromeNetBenchmarkingImpl::ClearHostResolverCache() {
// This function is disabled unless the user has enabled
// benchmarking extensions.
if (!CheckBenchmarkingEnabled()) {
@@ -105,7 +94,7 @@ void ChromeNetBenchmarkingMessageFilter::OnClearHostResolverCache() {
}
}
-void ChromeNetBenchmarkingMessageFilter::OnCloseCurrentConnections() {
+void ChromeNetBenchmarkingImpl::CloseCurrentConnections() {
// This function is disabled unless the user has enabled
// benchmarking extensions.
if (!CheckBenchmarkingEnabled()) {
@@ -116,7 +105,7 @@ void ChromeNetBenchmarkingMessageFilter::OnCloseCurrentConnections() {
http_transaction_factory()->GetCache()->CloseAllConnections();
}
-void ChromeNetBenchmarkingMessageFilter::OnSetCacheMode(bool enabled) {
+void ChromeNetBenchmarkingImpl::SetCacheMode(bool enabled) {
// This function is disabled unless the user has enabled
// benchmarking extensions.
if (!CheckBenchmarkingEnabled()) {
@@ -130,22 +119,18 @@ void ChromeNetBenchmarkingMessageFilter::OnSetCacheMode(bool enabled) {
http_cache->set_mode(mode);
}
-void ChromeNetBenchmarkingMessageFilter::OnClearPredictorCache() {
+void ChromeNetBenchmarkingImpl::ClearPredictorCache() {
// This function is disabled unless the user has enabled
// benchmarking extensions.
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (!CheckBenchmarkingEnabled()) {
NOTREACHED() << "Received unexpected benchmarking IPC";
return;
}
- // TODO(623967): Ensure that the profile or predictor are not accessed after
- // they have been shut down.
- chrome_browser_net::Predictor* predictor = profile_->GetNetworkPredictor();
- if (predictor)
- predictor->DiscardAllResultsAndClearPrefsOnUIThread();
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+ base::Bind(&ClearPredictorCacheOnUIThread, profile_));
}
-bool ChromeNetBenchmarkingMessageFilter::CheckBenchmarkingEnabled() const {
+bool ChromeNetBenchmarkingImpl::CheckBenchmarkingEnabled() const {
static bool checked = false;
static bool result = false;
if (!checked) {

Powered by Google App Engine
This is Rietveld 408576698