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

Side by Side Diff: net/nqe/network_qualities_prefs_manager.cc

Issue 2322183002: Add Network Quality Estimator (NQE) pref manager (Closed)
Patch Set: rebased Created 4 years, 3 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/nqe/network_qualities_prefs_manager.h"
6
7 #include <utility>
8
9 #include "base/bind.h"
10 #include "base/sequenced_task_runner.h"
11 #include "base/threading/thread_checker.h"
12 #include "base/threading/thread_task_runner_handle.h"
13 #include "base/values.h"
14 #include "net/nqe/cached_network_quality.h"
15 #include "net/nqe/network_quality_estimator.h"
16
17 namespace net {
18
19 NetworkQualitiesPrefsManager::NetworkQualitiesPrefsManager(
20 std::unique_ptr<PrefDelegate> pref_delegate)
21 : pref_delegate_(std::move(pref_delegate)),
22 pref_task_runner_(base::ThreadTaskRunnerHandle::Get()),
23 network_quality_estimator_(nullptr),
24 pref_weak_ptr_factory_(this) {
25 DCHECK(pref_delegate_);
26
27 pref_weak_ptr_ = pref_weak_ptr_factory_.GetWeakPtr();
28 }
29
30 NetworkQualitiesPrefsManager::~NetworkQualitiesPrefsManager() {
31 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
32 if (network_quality_estimator_)
33 network_quality_estimator_->RemoveNetworkQualitiesCacheObserver(this);
34 }
35
36 void NetworkQualitiesPrefsManager::InitializeOnNetworkThread(
37 NetworkQualityEstimator* network_quality_estimator) {
38 DCHECK(!network_task_runner_);
39 DCHECK(network_quality_estimator);
40
41 network_task_runner_ = base::ThreadTaskRunnerHandle::Get();
42 network_quality_estimator_ = network_quality_estimator;
43 network_quality_estimator_->AddNetworkQualitiesCacheObserver(this);
44 }
45
46 void NetworkQualitiesPrefsManager::OnChangeInCachedNetworkQuality(
47 const nqe::internal::NetworkID& network_id,
48 const nqe::internal::CachedNetworkQuality& cached_network_quality) {
49 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
50
51 // Notify |this| on the pref thread.
52 pref_task_runner_->PostTask(
53 FROM_HERE,
54 base::Bind(&NetworkQualitiesPrefsManager::
55 OnChangeInCachedNetworkQualityOnPrefThread,
56 pref_weak_ptr_, network_id, cached_network_quality));
57 }
58
59 void NetworkQualitiesPrefsManager::ShutdownOnPrefThread() {
60 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread());
61 pref_delegate_.reset();
62 }
63
64 void NetworkQualitiesPrefsManager::OnChangeInCachedNetworkQualityOnPrefThread(
65 const nqe::internal::NetworkID& network_id,
66 const nqe::internal::CachedNetworkQuality& cached_network_quality) {
67 // The prefs can only be written on the pref thread.
68 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread());
69
70 base::DictionaryValue dictionary_value;
71 dictionary_value.SetString(
72 network_id.ToString(),
73 GetNameForEffectiveConnectionType(
74 cached_network_quality.effective_connection_type()));
75
76 // Notify the pref delegate so that it updates the prefs on the disk.
77 pref_delegate_->SetDictionaryValue(dictionary_value);
78 }
79
80 } // namespace net
OLDNEW
« no previous file with comments | « net/nqe/network_qualities_prefs_manager.h ('k') | net/nqe/network_qualities_prefs_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698