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

Side by Side Diff: chrome/common/net/fake_network_change_notifier_thread.cc

Issue 2802015: Massively simplify the NetworkChangeNotifier infrastructure:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 5 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 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 "chrome/common/net/fake_network_change_notifier_thread.h"
6
7 #include "base/logging.h"
8 #include "base/message_loop.h"
9 #include "chrome/common/net/thread_blocker.h"
10 #include "net/base/mock_network_change_notifier.h"
11
12 // We manage the lifetime of
13 // chrome_common_net::FakeNetworkChangeNotifierThread ourselves.
14 DISABLE_RUNNABLE_METHOD_REFCOUNT(
15 chrome_common_net::FakeNetworkChangeNotifierThread);
16
17 namespace chrome_common_net {
18
19 FakeNetworkChangeNotifierThread::FakeNetworkChangeNotifierThread()
20 : thread_("FakeNetworkChangeNotifierThread") {}
21
22 FakeNetworkChangeNotifierThread::~FakeNetworkChangeNotifierThread() {
23 CHECK(!network_change_notifier_.get());
24 CHECK(!thread_blocker_.get());
25 CHECK(!thread_.IsRunning());
26 }
27
28 void FakeNetworkChangeNotifierThread::Start() {
29 network_change_notifier_.reset(new net::MockNetworkChangeNotifier());
30 CHECK(thread_.Start());
31 thread_blocker_.reset(new ThreadBlocker(&thread_));
32 thread_blocker_->Block();
33 }
34
35 void FakeNetworkChangeNotifierThread::Pump() {
36 thread_blocker_->Unblock();
37 thread_blocker_->Block();
38 }
39
40 void FakeNetworkChangeNotifierThread::Stop() {
41 thread_blocker_->Unblock();
42 thread_blocker_.reset();
43 thread_.Stop();
44 network_change_notifier_.reset();
45 }
46
47 void FakeNetworkChangeNotifierThread::NotifyIPAddressChange() {
48 CHECK(thread_.IsRunning());
49 GetMessageLoop()->PostTask(
50 FROM_HERE,
51 NewRunnableMethod(
52 this,
53 &FakeNetworkChangeNotifierThread::
54 NotifyIPAddressChangeOnSourceThread));
55 }
56
57 void FakeNetworkChangeNotifierThread::NotifyIPAddressChangeOnSourceThread() {
58 CHECK_EQ(MessageLoop::current(), GetMessageLoop());
59 CHECK(network_change_notifier_.get());
60 network_change_notifier_->NotifyIPAddressChange();
61 }
62
63 MessageLoop* FakeNetworkChangeNotifierThread::GetMessageLoop() const {
64 CHECK(thread_.IsRunning());
65 MessageLoop* message_loop = thread_.message_loop();
66 CHECK(message_loop);
67 return message_loop;
68 }
69
70 net::NetworkChangeNotifier*
71 FakeNetworkChangeNotifierThread::GetNetworkChangeNotifier() const {
72 CHECK_EQ(MessageLoop::current(), GetMessageLoop());
73 CHECK(network_change_notifier_.get());
74 return network_change_notifier_.get();
75 }
76
77 } // namespace chrome_common_net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698