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

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

Issue 2322183002: Add Network Quality Estimator (NQE) pref manager (Closed)
Patch Set: Addressed kundaji comments 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/threading/thread_checker.h"
11 #include "base/values.h"
12 #include "net/nqe/cached_network_quality.h"
13 #include "net/nqe/network_quality_estimator.h"
14
15 namespace net {
16
17 NetworkQualitiesPrefsManager::NetworkQualitiesPrefsManager(
18 std::unique_ptr<PrefDelegate> pref_delegate)
19 : pref_delegate_(std::move(pref_delegate)),
20 pref_task_runner_(base::ThreadTaskRunnerHandle::Get()),
Not at Google. Contact bengr 2016/09/15 22:46:57 Import what you use: #include "base/sequenced_task
tbansal1 2016/09/17 00:26:36 Done.
21 network_quality_estimator_(nullptr),
22 pref_weak_ptr_factory_(this) {
23 DCHECK(pref_delegate_);
24
25 pref_weak_ptr_ = pref_weak_ptr_factory_.GetWeakPtr();
26 }
27
28 NetworkQualitiesPrefsManager::~NetworkQualitiesPrefsManager() {
29 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
30 network_quality_estimator_->RemoveNetworkQualitiesCacheObserver(this);
31 }
32
33 void NetworkQualitiesPrefsManager::InitializeOnNetworkThread(
34 NetworkQualityEstimator* network_quality_estimator) {
35 DCHECK(!network_task_runner_);
36 DCHECK(network_quality_estimator);
37
38 network_task_runner_ = base::ThreadTaskRunnerHandle::Get();
39
40 network_quality_estimator_ = network_quality_estimator;
41
42 network_quality_estimator_->AddNetworkQualitiesCacheObserver(this);
43 }
44
45 void NetworkQualitiesPrefsManager::OnChangeInCachedNetworkQuality(
46 const nqe::internal::NetworkID& network_id,
47 const nqe::internal::CachedNetworkQuality& cached_network_quality) {
48 DCHECK(network_task_runner_->RunsTasksOnCurrentThread());
49
50 // Notify |this| on the pref thread.
51 pref_task_runner_->PostTask(
52 FROM_HERE,
53 base::Bind(&NetworkQualitiesPrefsManager::
54 OnChangeInCachedNetworkQualityOnPrefThread,
55 pref_weak_ptr_, network_id, cached_network_quality));
56 }
57
58 void NetworkQualitiesPrefsManager::ShutdownOnPrefThread() {
59 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread());
60 pref_delegate_.reset();
61 }
62
63 void NetworkQualitiesPrefsManager::OnChangeInCachedNetworkQualityOnPrefThread(
64 const nqe::internal::NetworkID& network_id,
65 const nqe::internal::CachedNetworkQuality& cached_network_quality) {
66 // The prefs can only be written on the pref thread.
67 DCHECK(pref_task_runner_->RunsTasksOnCurrentThread());
68
69 base::DictionaryValue dictionary_value;
70 dictionary_value.SetString(
71 network_id.ToString(),
72 GetNameForEffectiveConnectionType(
73 cached_network_quality.effective_connection_type()));
74
75 // Notify the pref delegate so that it updates the prefs on the disk.
76 pref_delegate_->SetDictionaryValue(dictionary_value);
77 }
78
79 } // 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