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

Unified Diff: chrome/browser/net/nqe/io_network_quality_observer.cc

Issue 2103323007: Exposing NQE on the Browser UI thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/net/nqe/io_network_quality_observer.cc
diff --git a/chrome/browser/net/nqe/io_network_quality_observer.cc b/chrome/browser/net/nqe/io_network_quality_observer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2d04e4613aa6b5abe1061e02a050a49de81c6572
--- /dev/null
+++ b/chrome/browser/net/nqe/io_network_quality_observer.cc
@@ -0,0 +1,42 @@
+// Copyright 2016 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/net/nqe/io_network_quality_observer.h"
+
+#include "base/bind.h"
+#include "base/task_runner.h"
+#include "chrome/browser/io_thread.h"
+#include "chrome/browser/net/nqe/ui_network_quality_estimator_service.h"
+
+IONetworkQualityObserver::IONetworkQualityObserver(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
+ base::WeakPtr<UINetworkQualityEstimatorService> service)
+ : ui_task_runner_(ui_task_runner), service_(service) {
+}
+
+IONetworkQualityObserver::~IONetworkQualityObserver() {
+ if (network_quality_estimator_)
+ network_quality_estimator_->RemoveEffectiveConnectionTypeObserver(this);
+}
+
+void IONetworkQualityObserver::InitializeOnIOThread(IOThread* io_thread) {
+ DCHECK(io_thread->globals()->network_quality_estimator);
tbansal1 2016/07/01 22:22:02 Is it guaranteed that nqe will be initialized when
RyanSturm 2016/07/11 22:00:19 Acknowledged.
+ network_quality_estimator_ =
+ io_thread->globals()->network_quality_estimator->GetWeakPtr();
+ network_quality_estimator_->AddEffectiveConnectionTypeObserver(this);
+ ui_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(
+ &UINetworkQualityEstimatorService::EffectiveConnectionTypeChanged,
+ service_, network_quality_estimator_->GetEffectiveConnectionType()));
+}
+
+void IONetworkQualityObserver::OnEffectiveConnectionTypeChanged(
+ net::NetworkQualityEstimator::EffectiveConnectionType type) {
+ ui_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(
+ &UINetworkQualityEstimatorService::EffectiveConnectionTypeChanged,
+ service_, type));
+}

Powered by Google App Engine
This is Rietveld 408576698