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

Unified Diff: net/base/network_config_watcher_mac.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « net/base/network_config_watcher_mac.h ('k') | net/base/network_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/network_config_watcher_mac.cc
diff --git a/net/base/network_config_watcher_mac.cc b/net/base/network_config_watcher_mac.cc
deleted file mode 100644
index bdf75c39ad2a8ac677386bfa760a133446eb18e2..0000000000000000000000000000000000000000
--- a/net/base/network_config_watcher_mac.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright (c) 2012 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 "net/base/network_config_watcher_mac.h"
-
-#include <algorithm>
-
-#include "base/bind.h"
-#include "base/compiler_specific.h"
-#include "base/memory/weak_ptr.h"
-#include "base/message_loop/message_loop.h"
-#include "base/threading/thread.h"
-#include "base/threading/thread_restrictions.h"
-
-namespace net {
-
-namespace {
-
-#if !defined(OS_IOS)
-// Called back by OS. Calls OnNetworkConfigChange().
-void DynamicStoreCallback(SCDynamicStoreRef /* store */,
- CFArrayRef changed_keys,
- void* config_delegate) {
- NetworkConfigWatcherMac::Delegate* net_config_delegate =
- static_cast<NetworkConfigWatcherMac::Delegate*>(config_delegate);
- net_config_delegate->OnNetworkConfigChange(changed_keys);
-}
-#endif // !defined(OS_IOS)
-
-class NetworkConfigWatcherMacThread : public base::Thread {
- public:
- NetworkConfigWatcherMacThread(NetworkConfigWatcherMac::Delegate* delegate);
- ~NetworkConfigWatcherMacThread() override;
-
- protected:
- // base::Thread
- void Init() override;
- void CleanUp() override;
-
- private:
- // The SystemConfiguration calls in this function can lead to contention early
- // on, so we invoke this function later on in startup to keep it fast.
- void InitNotifications();
-
- base::ScopedCFTypeRef<CFRunLoopSourceRef> run_loop_source_;
- NetworkConfigWatcherMac::Delegate* const delegate_;
- base::WeakPtrFactory<NetworkConfigWatcherMacThread> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(NetworkConfigWatcherMacThread);
-};
-
-NetworkConfigWatcherMacThread::NetworkConfigWatcherMacThread(
- NetworkConfigWatcherMac::Delegate* delegate)
- : base::Thread("NetworkConfigWatcher"),
- delegate_(delegate),
- weak_factory_(this) {}
-
-NetworkConfigWatcherMacThread::~NetworkConfigWatcherMacThread() {
- // Allow IO because Stop() calls PlatformThread::Join(), which is a blocking
- // operation. This is expected during shutdown.
- base::ThreadRestrictions::ScopedAllowIO allow_io;
-
- Stop();
-}
-
-void NetworkConfigWatcherMacThread::Init() {
- // Disallow IO to make sure NetworkConfigWatcherMacThread's helper thread does
- // not perform blocking operations.
- base::ThreadRestrictions::SetIOAllowed(false);
-
- delegate_->Init();
-
- // TODO(willchan): Look to see if there's a better signal for when it's ok to
- // initialize this, rather than just delaying it by a fixed time.
- const base::TimeDelta kInitializationDelay = base::TimeDelta::FromSeconds(1);
- message_loop()->PostDelayedTask(
- FROM_HERE,
- base::Bind(&NetworkConfigWatcherMacThread::InitNotifications,
- weak_factory_.GetWeakPtr()),
- kInitializationDelay);
-}
-
-void NetworkConfigWatcherMacThread::CleanUp() {
- if (!run_loop_source_.get())
- return;
-
- CFRunLoopRemoveSource(CFRunLoopGetCurrent(), run_loop_source_.get(),
- kCFRunLoopCommonModes);
- run_loop_source_.reset();
-}
-
-void NetworkConfigWatcherMacThread::InitNotifications() {
-#if !defined(OS_IOS)
- // SCDynamicStore API does not exist on iOS.
- // Add a run loop source for a dynamic store to the current run loop.
- SCDynamicStoreContext context = {
- 0, // Version 0.
- delegate_, // User data.
- NULL, // This is not reference counted. No retain function.
- NULL, // This is not reference counted. No release function.
- NULL, // No description for this.
- };
- base::ScopedCFTypeRef<SCDynamicStoreRef> store(SCDynamicStoreCreate(
- NULL, CFSTR("org.chromium"), DynamicStoreCallback, &context));
- run_loop_source_.reset(SCDynamicStoreCreateRunLoopSource(
- NULL, store.get(), 0));
- CFRunLoopAddSource(CFRunLoopGetCurrent(), run_loop_source_.get(),
- kCFRunLoopCommonModes);
-#endif // !defined(OS_IOS)
-
- // Set up notifications for interface and IP address changes.
- delegate_->StartReachabilityNotifications();
-#if !defined(OS_IOS)
- delegate_->SetDynamicStoreNotificationKeys(store.get());
-#endif // !defined(OS_IOS)
-}
-
-} // namespace
-
-NetworkConfigWatcherMac::NetworkConfigWatcherMac(Delegate* delegate)
- : notifier_thread_(new NetworkConfigWatcherMacThread(delegate)) {
- // We create this notifier thread because the notification implementation
- // needs a thread with a CFRunLoop, and there's no guarantee that
- // MessageLoop::current() meets that criterion.
- base::Thread::Options thread_options(base::MessageLoop::TYPE_UI, 0);
- notifier_thread_->StartWithOptions(thread_options);
-}
-
-NetworkConfigWatcherMac::~NetworkConfigWatcherMac() {}
-
-} // namespace net
« no previous file with comments | « net/base/network_config_watcher_mac.h ('k') | net/base/network_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698