Remove base ios files

Change-Id: Id3e521926bf1d7a26000b9d7bf8dc637f48914f7
Reviewed-on: https://gn-review.googlesource.com/1407
Reviewed-by: Brett Wilson <brettw@chromium.org>
Commit-Queue: Scott Graham <scottmg@chromium.org>
diff --git a/base/critical_closure_internal_ios.mm b/base/critical_closure_internal_ios.mm
deleted file mode 100644
index e35eca0..0000000
--- a/base/critical_closure_internal_ios.mm
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2014 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 "base/critical_closure.h"
-
-#import <UIKit/UIKit.h>
-
-namespace base {
-namespace internal {
-
-bool IsMultiTaskingSupported() {
-  return [[UIDevice currentDevice] isMultitaskingSupported];
-}
-
-CriticalClosure::CriticalClosure(OnceClosure closure)
-    : closure_(std::move(closure)) {}
-
-CriticalClosure::~CriticalClosure() {}
-
-void CriticalClosure::Run() {
-  std::move(closure_).Run();
-}
-
-}  // namespace internal
-}  // namespace base
diff --git a/base/ios/OWNERS b/base/ios/OWNERS
deleted file mode 100644
index bdb59ec..0000000
--- a/base/ios/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-eugenebut@chromium.org
-rohitrao@chromium.org
-sdefresne@chromium.org
diff --git a/base/ios/block_types.h b/base/ios/block_types.h
deleted file mode 100644
index e4dde79..0000000
--- a/base/ios/block_types.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2013 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.
-
-#ifndef BASE_IOS_BLOCK_TYPES_H_
-#define BASE_IOS_BLOCK_TYPES_H_
-
-// A generic procedural block type that takes no arguments and returns nothing.
-typedef void (^ProceduralBlock)(void);
-
-// A block that takes no arguments and returns a bool.
-typedef bool (^ConditionBlock)(void);
-
-#endif  // BASE_IOS_BLOCK_TYPES_H_
diff --git a/base/ios/crb_protocol_observers.h b/base/ios/crb_protocol_observers.h
deleted file mode 100644
index 8ff5878..0000000
--- a/base/ios/crb_protocol_observers.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2014 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.
-
-#ifndef BASE_IOS_CRB_PROTOCOL_OBSERVERS_H_
-#define BASE_IOS_CRB_PROTOCOL_OBSERVERS_H_
-
-#import <Foundation/Foundation.h>
-
-typedef void (^ExecutionWithObserverBlock)(id);
-
-// Implements a container for observers that implement a specific Objective-C
-// protocol. The container forwards method invocations to its contained
-// observers, so that sending a message to all the observers is as simple as
-// sending the message to the container.
-// It is safe for an observer to remove itself or another observer while being
-// notified. It is also safe to add an other observer while being notified but
-// the newly added observer will not be notified as part of the current
-// notification dispatch.
-@interface CRBProtocolObservers : NSObject
-
-// The Objective-C protocol that the observers in this container conform to.
-@property(nonatomic, readonly) Protocol* protocol;
-
-// Returns a CRBProtocolObservers container for observers that conform to
-// |protocol|.
-+ (instancetype)observersWithProtocol:(Protocol*)protocol;
-
-// Adds |observer| to this container.
-- (void)addObserver:(id)observer;
-
-// Remove |observer| from this container.
-- (void)removeObserver:(id)observer;
-
-// Returns true if there are currently no observers.
-- (BOOL)empty;
-
-// Executes callback on every observer. |callback| cannot be nil.
-- (void)executeOnObservers:(ExecutionWithObserverBlock)callback;
-
-@end
-
-#endif  // BASE_IOS_CRB_PROTOCOL_OBSERVERS_H_
diff --git a/base/ios/crb_protocol_observers.mm b/base/ios/crb_protocol_observers.mm
deleted file mode 100644
index 1a3b9f7..0000000
--- a/base/ios/crb_protocol_observers.mm
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright 2014 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.
-
-#import "base/ios/crb_protocol_observers.h"
-
-#include <objc/runtime.h>
-#include <stddef.h>
-#include <algorithm>
-#include <vector>
-
-#include "base/logging.h"
-#include "base/mac/scoped_nsobject.h"
-#include "base/stl_util.h"
-
-@interface CRBProtocolObservers () {
-  base::scoped_nsobject<Protocol> _protocol;
-  // ivars declared here are private to the implementation but must be
-  // public for allowing the C++ |Iterator| class access to those ivars.
- @public
-  // vector of weak pointers to observers.
-  std::vector<__unsafe_unretained id> _observers;
-  // The nested level of observer iteration.
-  // A depth of 0 means nobody is currently iterating on the list of observers.
-  int _invocationDepth;
-}
-
-// Removes nil observers from the list and is called when the
-// |_invocationDepth| reaches 0.
-- (void)compact;
-
-@end
-
-namespace {
-
-class Iterator {
- public:
-  explicit Iterator(CRBProtocolObservers* protocol_observers);
-  ~Iterator();
-  id GetNext();
-
- private:
-  CRBProtocolObservers* protocol_observers_;
-  size_t index_;
-  size_t max_index_;
-};
-
-Iterator::Iterator(CRBProtocolObservers* protocol_observers)
-    : protocol_observers_(protocol_observers),
-      index_(0),
-      max_index_(protocol_observers->_observers.size()) {
-  DCHECK(protocol_observers_);
-  ++protocol_observers->_invocationDepth;
-}
-
-Iterator::~Iterator() {
-  if (protocol_observers_ && --protocol_observers_->_invocationDepth == 0)
-    [protocol_observers_ compact];
-}
-
-id Iterator::GetNext() {
-  if (!protocol_observers_)
-    return nil;
-  auto& observers = protocol_observers_->_observers;
-  // Skip nil elements.
-  size_t max_index = std::min(max_index_, observers.size());
-  while (index_ < max_index && !observers[index_])
-    ++index_;
-  return index_ < max_index ? observers[index_++] : nil;
-}
-}
-
-@interface CRBProtocolObservers ()
-
-// Designated initializer.
-- (id)initWithProtocol:(Protocol*)protocol;
-
-@end
-
-@implementation CRBProtocolObservers
-
-+ (instancetype)observersWithProtocol:(Protocol*)protocol {
-  return [[[self alloc] initWithProtocol:protocol] autorelease];
-}
-
-- (id)init {
-  NOTREACHED();
-  return nil;
-}
-
-- (id)initWithProtocol:(Protocol*)protocol {
-  self = [super init];
-  if (self) {
-    _protocol.reset([protocol retain]);
-  }
-  return self;
-}
-
-- (Protocol*)protocol {
-  return _protocol.get();
-}
-
-- (void)addObserver:(id)observer {
-  DCHECK(observer);
-  DCHECK([observer conformsToProtocol:self.protocol]);
-
-  if (base::ContainsValue(_observers, observer))
-    return;
-
-  _observers.push_back(observer);
-}
-
-- (void)removeObserver:(id)observer {
-  DCHECK(observer);
-  auto it = std::find(_observers.begin(), _observers.end(), observer);
-  if (it != _observers.end()) {
-    if (_invocationDepth)
-      *it = nil;
-    else
-      _observers.erase(it);
-  }
-}
-
-- (BOOL)empty {
-  int count = 0;
-  for (id observer : _observers) {
-    if (observer != nil)
-      ++count;
-  }
-  return count == 0;
-}
-
-#pragma mark - NSObject
-
-- (NSMethodSignature*)methodSignatureForSelector:(SEL)selector {
-  NSMethodSignature* signature = [super methodSignatureForSelector:selector];
-  if (signature)
-    return signature;
-
-  // Look for a required method in the protocol. protocol_getMethodDescription
-  // returns a struct whose fields are null if a method for the selector was
-  // not found.
-  struct objc_method_description description =
-      protocol_getMethodDescription(self.protocol, selector, YES, YES);
-  if (description.types)
-    return [NSMethodSignature signatureWithObjCTypes:description.types];
-
-  // Look for an optional method in the protocol.
-  description = protocol_getMethodDescription(self.protocol, selector, NO, YES);
-  if (description.types)
-    return [NSMethodSignature signatureWithObjCTypes:description.types];
-
-  // There is neither a required nor optional method with this selector in the
-  // protocol, so invoke -[NSObject doesNotRecognizeSelector:] to raise
-  // NSInvalidArgumentException.
-  [self doesNotRecognizeSelector:selector];
-  return nil;
-}
-
-- (void)forwardInvocation:(NSInvocation*)invocation {
-  DCHECK(invocation);
-  if (_observers.empty())
-    return;
-  SEL selector = [invocation selector];
-  Iterator it(self);
-  id observer;
-  while ((observer = it.GetNext()) != nil) {
-    if ([observer respondsToSelector:selector])
-      [invocation invokeWithTarget:observer];
-  }
-}
-
-- (void)executeOnObservers:(ExecutionWithObserverBlock)callback {
-  DCHECK(callback);
-  if (_observers.empty())
-    return;
-  Iterator it(self);
-  id observer;
-  while ((observer = it.GetNext()) != nil)
-    callback(observer);
-}
-
-#pragma mark - Private
-
-- (void)compact {
-  DCHECK(!_invocationDepth);
-  _observers.erase(std::remove(_observers.begin(), _observers.end(), nil),
-                   _observers.end());
-}
-
-@end
diff --git a/base/ios/crb_protocol_observers_unittest.mm b/base/ios/crb_protocol_observers_unittest.mm
deleted file mode 100644
index 07f5cff..0000000
--- a/base/ios/crb_protocol_observers_unittest.mm
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright 2014 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.
-
-#import "base/ios/crb_protocol_observers.h"
-#include "base/ios/weak_nsobject.h"
-#include "base/logging.h"
-#include "base/mac/scoped_nsautorelease_pool.h"
-#include "base/mac/scoped_nsobject.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "testing/gtest_mac.h"
-#include "testing/platform_test.h"
-
-@protocol TestObserver
-
-@required
-- (void)requiredMethod;
-- (void)reset;
-
-@optional
-- (void)optionalMethod;
-- (void)mutateByAddingObserver:(id<TestObserver>)observer;
-- (void)mutateByRemovingObserver:(id<TestObserver>)observer;
-- (void)nestedMutateByAddingObserver:(id<TestObserver>)observer;
-- (void)nestedMutateByRemovingObserver:(id<TestObserver>)observer;
-
-@end
-
-// Implements only the required methods in the TestObserver protocol.
-@interface TestPartialObserver : NSObject<TestObserver>
-@property(nonatomic, readonly) BOOL requiredMethodInvoked;
-@end
-
-// Implements all the methods in the TestObserver protocol.
-@interface TestCompleteObserver : TestPartialObserver<TestObserver>
-@property(nonatomic, readonly) BOOL optionalMethodInvoked;
-@end
-
-@interface TestMutateObserver : TestCompleteObserver
-- (instancetype)initWithObserver:(CRBProtocolObservers*)observer
-    NS_DESIGNATED_INITIALIZER;
-- (instancetype)init NS_UNAVAILABLE;
-@end
-
-namespace {
-
-class CRBProtocolObserversTest : public PlatformTest {
- public:
-  CRBProtocolObserversTest() {}
-
- protected:
-  void SetUp() override {
-    PlatformTest::SetUp();
-
-    observers_.reset([[CRBProtocolObservers observersWithProtocol:
-        @protocol(TestObserver)] retain]);
-
-    partial_observer_.reset([[TestPartialObserver alloc] init]);
-    EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
-    complete_observer_.reset([[TestCompleteObserver alloc] init]);
-    EXPECT_FALSE([complete_observer_ requiredMethodInvoked]);
-    EXPECT_FALSE([complete_observer_ optionalMethodInvoked]);
-
-    mutate_observer_.reset(
-        [[TestMutateObserver alloc] initWithObserver:observers_.get()]);
-    EXPECT_FALSE([mutate_observer_ requiredMethodInvoked]);
-  }
-
-  base::scoped_nsobject<id> observers_;
-  base::scoped_nsobject<TestPartialObserver> partial_observer_;
-  base::scoped_nsobject<TestCompleteObserver> complete_observer_;
-  base::scoped_nsobject<TestMutateObserver> mutate_observer_;
-};
-
-// Verifies basic functionality of -[CRBProtocolObservers addObserver:] and
-// -[CRBProtocolObservers removeObserver:].
-TEST_F(CRBProtocolObserversTest, AddRemoveObserver) {
-  // Add an observer and verify that the CRBProtocolObservers instance forwards
-  // an invocation to it.
-  [observers_ addObserver:partial_observer_];
-  [observers_ requiredMethod];
-  EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
-  [partial_observer_ reset];
-  EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
-  // Remove the observer and verify that the CRBProtocolObservers instance no
-  // longer forwards an invocation to it.
-  [observers_ removeObserver:partial_observer_];
-  [observers_ requiredMethod];
-  EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-}
-
-// Verifies that CRBProtocolObservers correctly forwards the invocation of a
-// required method in the protocol.
-TEST_F(CRBProtocolObserversTest, RequiredMethods) {
-  [observers_ addObserver:partial_observer_];
-  [observers_ addObserver:complete_observer_];
-  [observers_ requiredMethod];
-  EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-  EXPECT_TRUE([complete_observer_ requiredMethodInvoked]);
-}
-
-// Verifies that CRBProtocolObservers correctly forwards the invocation of an
-// optional method in the protocol.
-TEST_F(CRBProtocolObserversTest, OptionalMethods) {
-  [observers_ addObserver:partial_observer_];
-  [observers_ addObserver:complete_observer_];
-  [observers_ optionalMethod];
-  EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-  EXPECT_FALSE([complete_observer_ requiredMethodInvoked]);
-  EXPECT_TRUE([complete_observer_ optionalMethodInvoked]);
-}
-
-// Verifies that CRBProtocolObservers only holds a weak reference to an
-// observer.
-TEST_F(CRBProtocolObserversTest, WeakReference) {
-  base::WeakNSObject<TestPartialObserver> weak_observer(
-      partial_observer_);
-  EXPECT_TRUE(weak_observer);
-
-  [observers_ addObserver:partial_observer_];
-
-  {
-    // Need an autorelease pool here, because
-    // -[CRBProtocolObservers forwardInvocation:] creates a temporary
-    // autoreleased array that holds all the observers.
-    base::mac::ScopedNSAutoreleasePool pool;
-    [observers_ requiredMethod];
-    EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-  }
-
-  partial_observer_.reset();
-  EXPECT_FALSE(weak_observer.get());
-}
-
-// Verifies that an observer can safely remove itself as observer while being
-// notified.
-TEST_F(CRBProtocolObserversTest, SelfMutateObservers) {
-  [observers_ addObserver:mutate_observer_];
-  EXPECT_FALSE([observers_ empty]);
-
-  [observers_ requiredMethod];
-  EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
-
-  [mutate_observer_ reset];
-
-  [observers_ nestedMutateByRemovingObserver:mutate_observer_];
-  EXPECT_FALSE([mutate_observer_ requiredMethodInvoked]);
-
-  [observers_ addObserver:partial_observer_];
-
-  [observers_ requiredMethod];
-  EXPECT_FALSE([mutate_observer_ requiredMethodInvoked]);
-  EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
-  [observers_ removeObserver:partial_observer_];
-  EXPECT_TRUE([observers_ empty]);
-}
-
-// Verifies that - [CRBProtocolObservers addObserver:] and
-// - [CRBProtocolObservers removeObserver:] can be called while methods are
-// being forwarded.
-TEST_F(CRBProtocolObserversTest, MutateObservers) {
-  // Indirectly add an observer while forwarding an observer method.
-  [observers_ addObserver:mutate_observer_];
-
-  [observers_ mutateByAddingObserver:partial_observer_];
-  EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
-  // Check that methods are correctly forwared to the indirectly added observer.
-  [mutate_observer_ reset];
-  [observers_ requiredMethod];
-  EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
-  EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
-  [mutate_observer_ reset];
-  [partial_observer_ reset];
-
-  // Indirectly remove an observer while forwarding an observer method.
-  [observers_ mutateByRemovingObserver:partial_observer_];
-
-  // Check that method is not forwared to the indirectly removed observer.
-  [observers_ requiredMethod];
-  EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
-  EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-}
-
-// Verifies that - [CRBProtocolObservers addObserver:] and
-// - [CRBProtocolObservers removeObserver:] can be called while methods are
-// being forwarded with a nested invocation depth > 0.
-TEST_F(CRBProtocolObserversTest, NestedMutateObservers) {
-  // Indirectly add an observer while forwarding an observer method.
-  [observers_ addObserver:mutate_observer_];
-
-  [observers_ nestedMutateByAddingObserver:partial_observer_];
-  EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-
-  // Check that methods are correctly forwared to the indirectly added observer.
-  [mutate_observer_ reset];
-  [observers_ requiredMethod];
-  EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
-  EXPECT_TRUE([partial_observer_ requiredMethodInvoked]);
-
-  [mutate_observer_ reset];
-  [partial_observer_ reset];
-
-  // Indirectly remove an observer while forwarding an observer method.
-  [observers_ nestedMutateByRemovingObserver:partial_observer_];
-
-  // Check that method is not forwared to the indirectly removed observer.
-  [observers_ requiredMethod];
-  EXPECT_TRUE([mutate_observer_ requiredMethodInvoked]);
-  EXPECT_FALSE([partial_observer_ requiredMethodInvoked]);
-}
-
-}  // namespace
-
-@implementation TestPartialObserver {
-  BOOL _requiredMethodInvoked;
-}
-
-- (BOOL)requiredMethodInvoked {
-  return _requiredMethodInvoked;
-}
-
-- (void)requiredMethod {
-  _requiredMethodInvoked = YES;
-}
-
-- (void)reset {
-  _requiredMethodInvoked = NO;
-}
-
-@end
-
-@implementation TestCompleteObserver {
-  BOOL _optionalMethodInvoked;
-}
-
-- (BOOL)optionalMethodInvoked {
-  return _optionalMethodInvoked;
-}
-
-- (void)optionalMethod {
-  _optionalMethodInvoked = YES;
-}
-
-- (void)reset {
-  [super reset];
-  _optionalMethodInvoked = NO;
-}
-
-@end
-
-@implementation TestMutateObserver {
-  id _observers;  // weak
-}
-
-- (instancetype)initWithObserver:(CRBProtocolObservers*)observers {
-  self = [super init];
-  if (self) {
-    _observers = observers;
-  }
-  return self;
-}
-
-- (instancetype)init {
-  NOTREACHED();
-  return nil;
-}
-
-- (void)mutateByAddingObserver:(id<TestObserver>)observer {
-  [_observers addObserver:observer];
-}
-
-- (void)mutateByRemovingObserver:(id<TestObserver>)observer {
-  [_observers removeObserver:observer];
-}
-
-- (void)nestedMutateByAddingObserver:(id<TestObserver>)observer {
-  [_observers mutateByAddingObserver:observer];
-}
-
-- (void)nestedMutateByRemovingObserver:(id<TestObserver>)observer {
-  [_observers mutateByRemovingObserver:observer];
-}
-
-@end
diff --git a/base/ios/device_util.h b/base/ios/device_util.h
deleted file mode 100644
index b1bed5c..0000000
--- a/base/ios/device_util.h
+++ /dev/null
@@ -1,86 +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.
-
-#ifndef BASE_IOS_DEVICE_UTIL_H_
-#define BASE_IOS_DEVICE_UTIL_H_
-
-#include <stdint.h>
-
-#include <string>
-
-namespace ios {
-namespace device_util {
-
-// Returns the hardware version of the device the app is running on.
-//
-// The returned string is the string returned by sysctlbyname() with name
-// "hw.machine". Possible (known) values include:
-//
-// iPhone1,1 -> iPhone 1G
-// iPhone1,2 -> iPhone 3G
-// iPhone2,1 -> iPhone 3GS
-// iPhone3,1 -> iPhone 4/AT&T
-// iPhone3,2 -> iPhone 4/Other Carrier?
-// iPhone3,3 -> iPhone 4/Other Carrier?
-// iPhone4,1 -> iPhone 4S
-//
-// iPod1,1   -> iPod touch 1G
-// iPod2,1   -> iPod touch 2G
-// iPod2,2   -> ?
-// iPod3,1   -> iPod touch 3G
-// iPod4,1   -> iPod touch 4G
-// iPod5,1   -> ?
-//
-// iPad1,1   -> iPad 1G, WiFi
-// iPad1,?   -> iPad 1G, 3G <- needs 3G owner to test
-// iPad2,1   -> iPad 2G, WiFi
-//
-// AppleTV2,1 -> AppleTV 2
-//
-// i386       -> Simulator
-// x86_64     -> Simulator
-std::string GetPlatform();
-
-// Returns true if the application is running on a device with 512MB or more
-// RAM.
-bool RamIsAtLeast512Mb();
-
-// Returns true if the application is running on a device with 1024MB or more
-// RAM.
-bool RamIsAtLeast1024Mb();
-
-// Returns true if the application is running on a device with |ram_in_mb| MB or
-// more RAM.
-// Use with caution! Actual RAM reported by devices is less than the commonly
-// used powers-of-two values. For example, a 512MB device may report only 502MB
-// RAM. The convenience methods above should be used in most cases because they
-// correctly handle this issue.
-bool RamIsAtLeast(uint64_t ram_in_mb);
-
-// Returns true if the device has only one core.
-bool IsSingleCoreDevice();
-
-// Returns the MAC address of the interface with name |interface_name|.
-std::string GetMacAddress(const std::string& interface_name);
-
-// Returns a random UUID.
-std::string GetRandomId();
-
-// Returns an identifier for the device, using the given |salt|. A global
-// identifier is generated the first time this method is called, and the salt
-// is used to be able to generate distinct identifiers for the same device. If
-// |salt| is NULL, a default value is used. Unless you are using this value for
-// something that should be anonymous, you should probably pass NULL.
-std::string GetDeviceIdentifier(const char* salt);
-
-// Returns a hashed version of |in_string| using |salt| (which must not be
-// zero-length). Different salt values should result in differently hashed
-// strings.
-std::string GetSaltedString(const std::string& in_string,
-                            const std::string& salt);
-
-}  // namespace device_util
-}  // namespace ios
-
-#endif  // BASE_IOS_DEVICE_UTIL_H_
diff --git a/base/ios/device_util.mm b/base/ios/device_util.mm
deleted file mode 100644
index 5ec1e69..0000000
--- a/base/ios/device_util.mm
+++ /dev/null
@@ -1,178 +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 "base/ios/device_util.h"
-
-#include <CommonCrypto/CommonDigest.h>
-#import <UIKit/UIKit.h>
-#include <ifaddrs.h>
-#include <net/if_dl.h>
-#include <stddef.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <sys/sysctl.h>
-
-#include <memory>
-
-#include "base/logging.h"
-#include "base/mac/scoped_cftyperef.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/sys_string_conversions.h"
-
-namespace {
-
-// Client ID key in the user preferences.
-NSString* const kLegacyClientIdPreferenceKey = @"ChromiumClientID";
-NSString* const kClientIdPreferenceKey = @"ChromeClientID";
-// Current hardware type. This is used to detect that a device has been backed
-// up and restored to another device, and allows regenerating a new device id.
-NSString* const kHardwareTypePreferenceKey = @"ClientIDGenerationHardwareType";
-// Default salt for device ids.
-const char kDefaultSalt[] = "Salt";
-// Zero UUID returned on buggy iOS devices.
-NSString* const kZeroUUID = @"00000000-0000-0000-0000-000000000000";
-
-NSString* GenerateClientId() {
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-
-  // Try to migrate from legacy client id.
-  NSString* client_id = [defaults stringForKey:kLegacyClientIdPreferenceKey];
-
-  // Some iOS6 devices return a buggy identifierForVendor:
-  // http://openradar.appspot.com/12377282. If this is the case, revert to
-  // generating a new one.
-  if (!client_id || [client_id isEqualToString:kZeroUUID]) {
-    client_id = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
-    if ([client_id isEqualToString:kZeroUUID])
-      client_id = base::SysUTF8ToNSString(ios::device_util::GetRandomId());
-  }
-  return client_id;
-}
-
-}  // namespace
-
-namespace ios {
-namespace device_util {
-
-std::string GetPlatform() {
-  std::string platform;
-  size_t size = 0;
-  sysctlbyname("hw.machine", NULL, &size, NULL, 0);
-  sysctlbyname("hw.machine", base::WriteInto(&platform, size), &size, NULL, 0);
-  return platform;
-}
-
-bool RamIsAtLeast512Mb() {
-  // 512MB devices report anywhere from 502-504 MB, use 450 MB just to be safe.
-  return RamIsAtLeast(450);
-}
-
-bool RamIsAtLeast1024Mb() {
-  // 1GB devices report anywhere from 975-999 MB, use 900 MB just to be safe.
-  return RamIsAtLeast(900);
-}
-
-bool RamIsAtLeast(uint64_t ram_in_mb) {
-  uint64_t memory_size = 0;
-  size_t size = sizeof(memory_size);
-  if (sysctlbyname("hw.memsize", &memory_size, &size, NULL, 0) == 0) {
-    // Anything >= 500M, call high ram.
-    return memory_size >= ram_in_mb * 1024 * 1024;
-  }
-  return false;
-}
-
-bool IsSingleCoreDevice() {
-  uint64_t cpu_number = 0;
-  size_t sizes = sizeof(cpu_number);
-  sysctlbyname("hw.physicalcpu", &cpu_number, &sizes, NULL, 0);
-  return cpu_number == 1;
-}
-
-std::string GetMacAddress(const std::string& interface_name) {
-  std::string mac_string;
-  struct ifaddrs* addresses;
-  if (getifaddrs(&addresses) == 0) {
-    for (struct ifaddrs* address = addresses; address;
-         address = address->ifa_next) {
-      if ((address->ifa_addr->sa_family == AF_LINK) &&
-          strcmp(interface_name.c_str(), address->ifa_name) == 0) {
-        const struct sockaddr_dl* found_address_struct =
-            reinterpret_cast<const struct sockaddr_dl*>(address->ifa_addr);
-
-        // |found_address_struct->sdl_data| contains the interface name followed
-        // by the interface address. The address part can be accessed based on
-        // the length of the name, that is, |found_address_struct->sdl_nlen|.
-        const unsigned char* found_address =
-            reinterpret_cast<const unsigned char*>(
-                &found_address_struct->sdl_data[
-                    found_address_struct->sdl_nlen]);
-
-        int found_address_length = found_address_struct->sdl_alen;
-        for (int i = 0; i < found_address_length; ++i) {
-          if (i != 0)
-            mac_string.push_back(':');
-          base::StringAppendF(&mac_string, "%02X", found_address[i]);
-        }
-        break;
-      }
-    }
-    freeifaddrs(addresses);
-  }
-  return mac_string;
-}
-
-std::string GetRandomId() {
-  base::ScopedCFTypeRef<CFUUIDRef> uuid_object(
-      CFUUIDCreate(kCFAllocatorDefault));
-  base::ScopedCFTypeRef<CFStringRef> uuid_string(
-      CFUUIDCreateString(kCFAllocatorDefault, uuid_object));
-  return base::SysCFStringRefToUTF8(uuid_string);
-}
-
-std::string GetDeviceIdentifier(const char* salt) {
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-
-  NSString* last_seen_hardware =
-      [defaults stringForKey:kHardwareTypePreferenceKey];
-  NSString* current_hardware = base::SysUTF8ToNSString(GetPlatform());
-  if (!last_seen_hardware) {
-    last_seen_hardware = current_hardware;
-    [defaults setObject:current_hardware forKey:kHardwareTypePreferenceKey];
-    [defaults synchronize];
-  }
-
-  NSString* client_id = [defaults stringForKey:kClientIdPreferenceKey];
-
-  if (!client_id || ![last_seen_hardware isEqualToString:current_hardware]) {
-    client_id = GenerateClientId();
-    [defaults setObject:client_id forKey:kClientIdPreferenceKey];
-    [defaults setObject:current_hardware forKey:kHardwareTypePreferenceKey];
-    [defaults synchronize];
-  }
-
-  return GetSaltedString(base::SysNSStringToUTF8(client_id),
-                         salt ? salt : kDefaultSalt);
-}
-
-std::string GetSaltedString(const std::string& in_string,
-                            const std::string& salt) {
-  DCHECK(salt.length());
-  NSData* hash_data = [base::SysUTF8ToNSString(in_string + salt)
-      dataUsingEncoding:NSUTF8StringEncoding];
-
-  unsigned char hash[CC_SHA256_DIGEST_LENGTH];
-  CC_SHA256([hash_data bytes], [hash_data length], hash);
-  CFUUIDBytes* uuid_bytes = reinterpret_cast<CFUUIDBytes*>(hash);
-
-  base::ScopedCFTypeRef<CFUUIDRef> uuid_object(
-      CFUUIDCreateFromUUIDBytes(kCFAllocatorDefault, *uuid_bytes));
-  base::ScopedCFTypeRef<CFStringRef> device_id(
-      CFUUIDCreateString(kCFAllocatorDefault, uuid_object));
-  return base::SysCFStringRefToUTF8(device_id);
-}
-
-}  // namespace device_util
-}  // namespace ios
diff --git a/base/ios/device_util_unittest.mm b/base/ios/device_util_unittest.mm
deleted file mode 100644
index 82d4217..0000000
--- a/base/ios/device_util_unittest.mm
+++ /dev/null
@@ -1,143 +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.
-
-#import <UIKit/UIKit.h>
-
-#include "base/ios/device_util.h"
-#include "base/strings/sys_string_conversions.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "testing/gtest_mac.h"
-#include "testing/platform_test.h"
-
-namespace {
-// The behavior of most of these utility functions depends on what they are run
-// on, so there is not much to unittest them. The APIs are run to make sure they
-// don't choke. Additional checks are added for particular APIs when needed.
-
-typedef PlatformTest DeviceUtilTest;
-
-void CleanNSUserDefaultsForDeviceId() {
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-  [defaults removeObjectForKey:@"ChromeClientID"];
-  [defaults removeObjectForKey:@"ChromiumClientID"];
-  [defaults removeObjectForKey:@"ClientIDGenerationHardwareType"];
-  [defaults synchronize];
-}
-
-TEST_F(DeviceUtilTest, GetPlatform) {
-  GTEST_ASSERT_GT(ios::device_util::GetPlatform().length(), 0U);
-}
-
-TEST_F(DeviceUtilTest, IsSingleCoreDevice) {
-  ios::device_util::IsSingleCoreDevice();
-}
-
-TEST_F(DeviceUtilTest, GetMacAddress) {
-  GTEST_ASSERT_GT(ios::device_util::GetMacAddress("en0").length(), 0U);
-}
-
-TEST_F(DeviceUtilTest, GetRandomId) {
-  GTEST_ASSERT_GT(ios::device_util::GetRandomId().length(), 0U);
-}
-
-TEST_F(DeviceUtilTest, GetDeviceIdentifier) {
-  CleanNSUserDefaultsForDeviceId();
-
-  std::string default_id = ios::device_util::GetDeviceIdentifier(NULL);
-  std::string other_id = ios::device_util::GetDeviceIdentifier("ForTest");
-  EXPECT_NE(default_id, other_id);
-
-  CleanNSUserDefaultsForDeviceId();
-
-  std::string new_default_id = ios::device_util::GetDeviceIdentifier(NULL);
-  if (![[[[UIDevice currentDevice] identifierForVendor] UUIDString]
-          isEqualToString:@"00000000-0000-0000-0000-000000000000"]) {
-    EXPECT_EQ(default_id, new_default_id);
-  } else {
-    EXPECT_NE(default_id, new_default_id);
-  }
-
-  CleanNSUserDefaultsForDeviceId();
-}
-
-TEST_F(DeviceUtilTest, CheckMigration) {
-  CleanNSUserDefaultsForDeviceId();
-
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-  [defaults setObject:@"10000000-0000-0000-0000-000000000000"
-               forKey:@"ChromeClientID"];
-  [defaults synchronize];
-  std::string expected_id = ios::device_util::GetDeviceIdentifier(NULL);
-  [defaults removeObjectForKey:@"ChromeClientID"];
-  [defaults setObject:@"10000000-0000-0000-0000-000000000000"
-               forKey:@"ChromiumClientID"];
-  [defaults synchronize];
-  std::string new_id = ios::device_util::GetDeviceIdentifier(NULL);
-  EXPECT_EQ(expected_id, new_id);
-
-  CleanNSUserDefaultsForDeviceId();
-}
-
-TEST_F(DeviceUtilTest, CheckMigrationFromZero) {
-  CleanNSUserDefaultsForDeviceId();
-
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-  [defaults setObject:@"00000000-0000-0000-0000-000000000000"
-               forKey:@"ChromeClientID"];
-  [defaults synchronize];
-  std::string zero_id = ios::device_util::GetDeviceIdentifier(NULL);
-  [defaults removeObjectForKey:@"ChromeClientID"];
-  [defaults setObject:@"00000000-0000-0000-0000-000000000000"
-               forKey:@"ChromiumClientID"];
-  [defaults synchronize];
-  std::string new_id = ios::device_util::GetDeviceIdentifier(NULL);
-  EXPECT_NE(zero_id, new_id);
-
-  CleanNSUserDefaultsForDeviceId();
-}
-
-TEST_F(DeviceUtilTest, GetSaltedStringEquals) {
-  std::string string1("The quick brown fox jumps over the lazy dog");
-  std::string string2("The quick brown fox jumps over the lazy dog");
-  std::string salt("salt");
-  // Same string and same salt should result in the same salted string.
-  EXPECT_EQ(ios::device_util::GetSaltedString(string1, salt),
-            ios::device_util::GetSaltedString(string2, salt));
-}
-
-TEST_F(DeviceUtilTest, GetSaltedStringNotEquals) {
-  std::string string1("The quick brown fox jumps over the lazy dog");
-  std::string string2("The lazy brown fox jumps over the quick dog");
-  std::string salt("salt");
-  // Different string and same salt should result in different salted strings.
-  EXPECT_NE(ios::device_util::GetSaltedString(string1, salt),
-            ios::device_util::GetSaltedString(string2, salt));
-}
-
-TEST_F(DeviceUtilTest, GetSaltedStringDifferentSalt) {
-  std::string string1("The quick brown fox jumps over the lazy dog");
-  std::string salt1("salt");
-  std::string salt2("pepper");
-  // Same string with different salt should result in different salted strings.
-  EXPECT_NE(ios::device_util::GetSaltedString(string1, salt1),
-            ios::device_util::GetSaltedString(string1, salt2));
-}
-
-TEST_F(DeviceUtilTest, CheckDeviceMigration) {
-  CleanNSUserDefaultsForDeviceId();
-
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-  [defaults setObject:@"10000000-0000-0000-0000-000000000000"
-               forKey:@"ChromeClientID"];
-  [defaults synchronize];
-  std::string base_id = ios::device_util::GetDeviceIdentifier(NULL);
-  [defaults setObject:@"Foo" forKey:@"ClientIDGenerationHardwareType"];
-  [defaults synchronize];
-  std::string new_id = ios::device_util::GetDeviceIdentifier(NULL);
-  EXPECT_NE(new_id, base_id);
-
-  CleanNSUserDefaultsForDeviceId();
-}
-
-}  // namespace
diff --git a/base/ios/ios_util.h b/base/ios/ios_util.h
deleted file mode 100644
index 2464b1c..0000000
--- a/base/ios/ios_util.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 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.
-
-#ifndef BASE_IOS_IOS_UTIL_H_
-#define BASE_IOS_IOS_UTIL_H_
-
-#include <stdint.h>
-
-#include "base/base_export.h"
-#include "base/files/file_path.h"
-
-namespace base {
-namespace ios {
-
-// Returns whether the operating system is iOS 10 or later.
-BASE_EXPORT bool IsRunningOnIOS10OrLater();
-
-// Returns whether the operating system is iOS 11 or later.
-BASE_EXPORT bool IsRunningOnIOS11OrLater();
-
-// Returns whether the operating system is at the given version or later.
-BASE_EXPORT bool IsRunningOnOrLater(int32_t major,
-                                    int32_t minor,
-                                    int32_t bug_fix);
-
-// Returns whether iOS is signalling that an RTL text direction should be used
-// regardless of the current locale. This should not return true if the current
-// language is a "real" RTL language such as Arabic or Urdu; it should only
-// return true in cases where the RTL text direction has been forced (for
-// example by using the "RTL Psuedolanguage" option when launching from XCode).
-BASE_EXPORT bool IsInForcedRTL();
-
-// Stores the |path| of the ICU dat file in a global to be referenced later by
-// FilePathOfICUFile().  This should only be called once.
-BASE_EXPORT void OverridePathOfEmbeddedICU(const char* path);
-
-// Returns the overriden path set by OverridePathOfEmbeddedICU(), otherwise
-// returns invalid FilePath.
-BASE_EXPORT FilePath FilePathOfEmbeddedICU();
-
-}  // namespace ios
-}  // namespace base
-
-#endif  // BASE_IOS_IOS_UTIL_H_
diff --git a/base/ios/ios_util.mm b/base/ios/ios_util.mm
deleted file mode 100644
index 2402d30..0000000
--- a/base/ios/ios_util.mm
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 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 "base/ios/ios_util.h"
-
-#import <Foundation/Foundation.h>
-#include <stddef.h>
-
-#include "base/macros.h"
-#include "base/sys_info.h"
-
-namespace {
-
-// Return a 3 elements array containing the major, minor and bug fix version of
-// the OS.
-const int32_t* OSVersionAsArray() {
-  int32_t* digits = new int32_t[3];
-  base::SysInfo::OperatingSystemVersionNumbers(
-      &digits[0], &digits[1], &digits[2]);
-  return digits;
-}
-
-std::string* g_icudtl_path_override = nullptr;
-
-}  // namespace
-
-namespace base {
-namespace ios {
-
-bool IsRunningOnIOS10OrLater() {
-  static const bool is_running_on_or_later = IsRunningOnOrLater(10, 0, 0);
-  return is_running_on_or_later;
-}
-
-bool IsRunningOnIOS11OrLater() {
-  static const bool is_running_on_or_later = IsRunningOnOrLater(11, 0, 0);
-  return is_running_on_or_later;
-}
-
-bool IsRunningOnOrLater(int32_t major, int32_t minor, int32_t bug_fix) {
-  static const int32_t* current_version = OSVersionAsArray();
-  int32_t version[] = {major, minor, bug_fix};
-  for (size_t i = 0; i < arraysize(version); i++) {
-    if (current_version[i] != version[i])
-      return current_version[i] > version[i];
-  }
-  return true;
-}
-
-bool IsInForcedRTL() {
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-  return [defaults boolForKey:@"NSForceRightToLeftWritingDirection"];
-}
-
-void OverridePathOfEmbeddedICU(const char* path) {
-  DCHECK(!g_icudtl_path_override);
-  g_icudtl_path_override = new std::string(path);
-}
-
-FilePath FilePathOfEmbeddedICU() {
-  if (g_icudtl_path_override) {
-    return FilePath(*g_icudtl_path_override);
-  }
-  return FilePath();
-}
-
-}  // namespace ios
-}  // namespace base
diff --git a/base/ios/ns_error_util.h b/base/ios/ns_error_util.h
deleted file mode 100644
index 1012292..0000000
--- a/base/ios/ns_error_util.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef BASE_IOS_NS_ERROR_UTIL_H_
-#define BASE_IOS_NS_ERROR_UTIL_H_
-
-@class NSError;
-
-namespace base {
-namespace ios {
-
-// Iterates through |error|'s underlying errors and returns the first error for
-// which there is no underlying error.
-NSError* GetFinalUnderlyingErrorFromError(NSError* error);
-
-// Returns a copy of |original_error| with |underlying_error| appended to the
-// end of its underlying error chain.
-NSError* ErrorWithAppendedUnderlyingError(NSError* original_error,
-                                          NSError* underlying_error);
-
-}  // namespace ios
-}  // namespace base
-
-#endif  // BASE_IOS_NS_ERROR_UTIL_H_
diff --git a/base/ios/ns_error_util.mm b/base/ios/ns_error_util.mm
deleted file mode 100644
index c44d9ee..0000000
--- a/base/ios/ns_error_util.mm
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2015 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.
-
-#import "base/ios/ns_error_util.h"
-
-#import <Foundation/Foundation.h>
-
-#include "base/logging.h"
-#include "base/mac/scoped_nsobject.h"
-
-namespace base {
-namespace ios {
-
-namespace {
-// Iterates through |error|'s underlying errors and returns them in an array.
-NSArray* GetFullErrorChainForError(NSError* error) {
-  NSMutableArray* error_chain = [NSMutableArray array];
-  NSError* current_error = error;
-  while (current_error) {
-    DCHECK([current_error isKindOfClass:[NSError class]]);
-    [error_chain addObject:current_error];
-    current_error = current_error.userInfo[NSUnderlyingErrorKey];
-  }
-  return error_chain;
-}
-}  // namespace
-
-NSError* GetFinalUnderlyingErrorFromError(NSError* error) {
-  DCHECK(error);
-  return [GetFullErrorChainForError(error) lastObject];
-}
-
-NSError* ErrorWithAppendedUnderlyingError(NSError* original_error,
-                                          NSError* underlying_error) {
-  DCHECK(original_error);
-  DCHECK(underlying_error);
-  NSArray* error_chain = GetFullErrorChainForError(original_error);
-  NSError* current_error = underlying_error;
-  for (NSInteger idx = error_chain.count - 1; idx >= 0; --idx) {
-    NSError* error = error_chain[idx];
-    scoped_nsobject<NSMutableDictionary> user_info(
-        [error.userInfo mutableCopy]);
-    [user_info setObject:current_error forKey:NSUnderlyingErrorKey];
-    current_error = [NSError errorWithDomain:error.domain
-                                        code:error.code
-                                    userInfo:user_info];
-  }
-  return current_error;
-}
-
-}  // namespace ios
-}  // namespace base
diff --git a/base/ios/scoped_critical_action.h b/base/ios/scoped_critical_action.h
deleted file mode 100644
index 2f7d16c..0000000
--- a/base/ios/scoped_critical_action.h
+++ /dev/null
@@ -1,73 +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.
-
-#ifndef BASE_IOS_SCOPED_CRITICAL_ACTION_H_
-#define BASE_IOS_SCOPED_CRITICAL_ACTION_H_
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/synchronization/lock.h"
-
-namespace base {
-namespace ios {
-
-// This class attempts to allow the application to continue to run for a period
-// of time after it transitions to the background. The construction of an
-// instance of this class marks the beginning of a task that needs background
-// running time when the application is moved to the background and the
-// destruction marks the end of such a task.
-//
-// Note there is no guarantee that the task will continue to finish when the
-// application is moved to the background.
-//
-// This class should be used at times where leaving a task unfinished might be
-// detrimental to user experience. For example, it should be used to ensure that
-// the application has enough time to save important data or at least attempt to
-// save such data.
-class ScopedCriticalAction {
- public:
-  ScopedCriticalAction();
-  ~ScopedCriticalAction();
-
- private:
-  // Core logic; ScopedCriticalAction should not be reference counted so
-  // that it follows the normal pattern of stack-allocating ScopedFoo objects,
-  // but the expiration handler needs to have a reference counted object to
-  // refer to.
-  class Core : public base::RefCountedThreadSafe<Core> {
-   public:
-    Core();
-
-    // Informs the OS that the background task has started. This is a
-    // static method to ensure that the instance has a non-zero refcount.
-    static void StartBackgroundTask(scoped_refptr<Core> core);
-    // Informs the OS that the background task has completed. This is a
-    // static method to ensure that the instance has a non-zero refcount.
-    static void EndBackgroundTask(scoped_refptr<Core> core);
-
-   private:
-    friend base::RefCountedThreadSafe<Core>;
-    ~Core();
-
-    // |UIBackgroundTaskIdentifier| returned by
-    // |beginBackgroundTaskWithExpirationHandler:| when marking the beginning of
-    // a long-running background task. It is defined as an |unsigned int|
-    // instead of a |UIBackgroundTaskIdentifier| so this class can be used in
-    // .cc files.
-    unsigned int background_task_id_;
-    Lock background_task_id_lock_;
-
-    DISALLOW_COPY_AND_ASSIGN(Core);
-  };
-
-  // The instance of the core that drives the background task.
-  scoped_refptr<Core> core_;
-
-  DISALLOW_COPY_AND_ASSIGN(ScopedCriticalAction);
-};
-
-}  // namespace ios
-}  // namespace base
-
-#endif  // BASE_IOS_SCOPED_CRITICAL_ACTION_H_
diff --git a/base/ios/scoped_critical_action.mm b/base/ios/scoped_critical_action.mm
deleted file mode 100644
index dbfbd45..0000000
--- a/base/ios/scoped_critical_action.mm
+++ /dev/null
@@ -1,77 +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 "base/ios/scoped_critical_action.h"
-
-#import <UIKit/UIKit.h>
-
-#include "base/logging.h"
-#include "base/memory/ref_counted.h"
-#include "base/synchronization/lock.h"
-
-namespace base {
-namespace ios {
-
-ScopedCriticalAction::ScopedCriticalAction()
-    : core_(MakeRefCounted<ScopedCriticalAction::Core>()) {
-  ScopedCriticalAction::Core::StartBackgroundTask(core_);
-}
-
-ScopedCriticalAction::~ScopedCriticalAction() {
-  ScopedCriticalAction::Core::EndBackgroundTask(core_);
-}
-
-ScopedCriticalAction::Core::Core()
-    : background_task_id_(UIBackgroundTaskInvalid) {}
-
-ScopedCriticalAction::Core::~Core() {
-  DCHECK_EQ(background_task_id_, UIBackgroundTaskInvalid);
-}
-
-// This implementation calls |beginBackgroundTaskWithExpirationHandler:| when
-// instantiated and |endBackgroundTask:| when destroyed, creating a scope whose
-// execution will continue (temporarily) even after the app is backgrounded.
-// static
-void ScopedCriticalAction::Core::StartBackgroundTask(scoped_refptr<Core> core) {
-  UIApplication* application = [UIApplication sharedApplication];
-  if (!application) {
-    return;
-  }
-
-  core->background_task_id_ =
-      [application beginBackgroundTaskWithExpirationHandler:^{
-        DLOG(WARNING) << "Background task with id " << core->background_task_id_
-                      << " expired.";
-        // Note if |endBackgroundTask:| is not called for each task before time
-        // expires, the system kills the application.
-        EndBackgroundTask(core);
-      }];
-
-  if (core->background_task_id_ == UIBackgroundTaskInvalid) {
-    DLOG(WARNING)
-        << "beginBackgroundTaskWithExpirationHandler: returned an invalid ID";
-  } else {
-    VLOG(3) << "Beginning background task with id "
-            << core->background_task_id_;
-  }
-}
-
-// static
-void ScopedCriticalAction::Core::EndBackgroundTask(scoped_refptr<Core> core) {
-  UIBackgroundTaskIdentifier task_id;
-  {
-    AutoLock lock_scope(core->background_task_id_lock_);
-    if (core->background_task_id_ == UIBackgroundTaskInvalid) {
-      return;
-    }
-    task_id = core->background_task_id_;
-    core->background_task_id_ = UIBackgroundTaskInvalid;
-  }
-
-  VLOG(3) << "Ending background task with id " << task_id;
-  [[UIApplication sharedApplication] endBackgroundTask:task_id];
-}
-
-}  // namespace ios
-}  // namespace base
diff --git a/base/ios/weak_nsobject.h b/base/ios/weak_nsobject.h
deleted file mode 100644
index 498cdee..0000000
--- a/base/ios/weak_nsobject.h
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright 2013 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.
-
-#ifndef BASE_IOS_WEAK_NSOBJECT_H_
-#define BASE_IOS_WEAK_NSOBJECT_H_
-
-#import <Foundation/Foundation.h>
-#import <objc/runtime.h>
-
-#include "base/compiler_specific.h"
-#include "base/logging.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-
-// WeakNSObject<> is patterned after scoped_nsobject<>, but instead of
-// maintaining ownership of an NSObject subclass object, it will nil itself out
-// when the object is deallocated.
-//
-// WeakNSProtocol<> has the same behavior as WeakNSObject, but can be used
-// with protocols.
-//
-// Example usage (base::WeakNSObject<T>):
-//   scoped_nsobject<Foo> foo([[Foo alloc] init]);
-//   WeakNSObject<Foo> weak_foo;  // No pointer
-//   weak_foo.reset(foo)  // Now a weak reference is kept.
-//   [weak_foo description];  // Returns [foo description].
-//   foo.reset();  // The reference is released.
-//   [weak_foo description];  // Returns nil, as weak_foo is pointing to nil.
-//
-//
-// Implementation wise a WeakNSObject keeps a reference to a refcounted
-// WeakContainer. There is one unique instance of a WeakContainer per watched
-// NSObject, this relationship is maintained via the ObjectiveC associated
-// object API, indirectly via an ObjectiveC CRBWeakNSProtocolSentinel class.
-//
-// Threading restrictions:
-// - Several WeakNSObject pointing to the same underlying object must all be
-//   created and dereferenced on the same thread;
-// - thread safety is enforced by the implementation, except in two cases:
-//   (1) it is allowed to copy a WeakNSObject on a different thread. However,
-//       that copy must return to the original thread before being dereferenced,
-//   (2) it is allowed to destroy a WeakNSObject on any thread;
-// - the implementation assumes that the tracked object will be released on the
-//   same thread that the WeakNSObject is created on.
-namespace base {
-
-// WeakContainer keeps a weak pointer to an object and clears it when it
-// receives nullify() from the object's sentinel.
-class WeakContainer : public base::RefCountedThreadSafe<WeakContainer> {
- public:
-  explicit WeakContainer(id object);
-
-  id object() {
-    DCHECK(checker_.CalledOnValidThread());
-    return object_;
-  }
-
-  void nullify() {
-    DCHECK(checker_.CalledOnValidThread());
-    object_ = nil;
-  }
-
- private:
-  friend base::RefCountedThreadSafe<WeakContainer>;
-  ~WeakContainer();
-  base::ThreadChecker checker_;
-  __unsafe_unretained id object_;
-};
-
-}  // namespace base
-
-// Sentinel for observing the object contained in the weak pointer. The object
-// will be deleted when the weak object is deleted and will notify its
-// container.
-@interface CRBWeakNSProtocolSentinel : NSObject
-// Return the only associated container for this object. There can be only one.
-// Will return null if object is nil .
-+ (scoped_refptr<base::WeakContainer>)containerForObject:(id)object;
-@end
-
-namespace base {
-
-// Base class for all WeakNSObject derivatives.
-template <typename NST>
-class WeakNSProtocol {
- public:
-  explicit WeakNSProtocol(NST object = nil) {
-    container_ = [CRBWeakNSProtocolSentinel containerForObject:object];
-  }
-
-  WeakNSProtocol(const WeakNSProtocol<NST>& that) {
-    // A WeakNSProtocol object can be copied on one thread and used on
-    // another.
-    checker_.DetachFromThread();
-    container_ = that.container_;
-  }
-
-  ~WeakNSProtocol() {
-    // A WeakNSProtocol object can be used on one thread and released on
-    // another. This is not the case for the contained object.
-    checker_.DetachFromThread();
-  }
-
-  void reset(NST object = nil) {
-    DCHECK(checker_.CalledOnValidThread());
-    container_ = [CRBWeakNSProtocolSentinel containerForObject:object];
-  }
-
-  NST get() const {
-    DCHECK(checker_.CalledOnValidThread());
-    if (!container_.get())
-      return nil;
-    return container_->object();
-  }
-
-  WeakNSProtocol& operator=(const WeakNSProtocol<NST>& that) {
-    // A WeakNSProtocol object can be copied on one thread and used on
-    // another.
-    checker_.DetachFromThread();
-    container_ = that.container_;
-    return *this;
-  }
-
-  bool operator==(NST that) const {
-    DCHECK(checker_.CalledOnValidThread());
-    return get() == that;
-  }
-
-  bool operator!=(NST that) const {
-    DCHECK(checker_.CalledOnValidThread());
-    return get() != that;
-  }
-
-  operator NST() const {
-    DCHECK(checker_.CalledOnValidThread());
-    return get();
-  }
-
- private:
-  // Refecounted reference to the container tracking the ObjectiveC object this
-  // class encapsulates.
-  scoped_refptr<base::WeakContainer> container_;
-  base::ThreadChecker checker_;
-};
-
-// Free functions
-template <class NST>
-bool operator==(NST p1, const WeakNSProtocol<NST>& p2) {
-  return p1 == p2.get();
-}
-
-template <class NST>
-bool operator!=(NST p1, const WeakNSProtocol<NST>& p2) {
-  return p1 != p2.get();
-}
-
-template <typename NST>
-class WeakNSObject : public WeakNSProtocol<NST*> {
- public:
-  explicit WeakNSObject(NST* object = nil) : WeakNSProtocol<NST*>(object) {}
-
-  WeakNSObject(const WeakNSObject<NST>& that) : WeakNSProtocol<NST*>(that) {}
-
-  WeakNSObject& operator=(const WeakNSObject<NST>& that) {
-    WeakNSProtocol<NST*>::operator=(that);
-    return *this;
-  }
-};
-
-// Specialization to make WeakNSObject<id> work.
-template <>
-class WeakNSObject<id> : public WeakNSProtocol<id> {
- public:
-  explicit WeakNSObject(id object = nil) : WeakNSProtocol<id>(object) {}
-
-  WeakNSObject(const WeakNSObject<id>& that) : WeakNSProtocol<id>(that) {}
-
-  WeakNSObject& operator=(const WeakNSObject<id>& that) {
-    WeakNSProtocol<id>::operator=(that);
-    return *this;
-  }
-};
-
-}  // namespace base
-
-#endif  // BASE_IOS_WEAK_NSOBJECT_H_
diff --git a/base/ios/weak_nsobject.mm b/base/ios/weak_nsobject.mm
deleted file mode 100644
index c017b1d..0000000
--- a/base/ios/weak_nsobject.mm
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2013 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 "base/ios/weak_nsobject.h"
-
-#include "base/mac/scoped_nsautorelease_pool.h"
-#include "base/mac/scoped_nsobject.h"
-
-namespace {
-// The key needed by objc_setAssociatedObject.
-char sentinelObserverKey_;
-}
-
-namespace base {
-
-WeakContainer::WeakContainer(id object) : object_(object) {}
-
-WeakContainer::~WeakContainer() {}
-
-}  // namespace base
-
-@interface CRBWeakNSProtocolSentinel ()
-// Container to notify on dealloc.
-@property(readonly, assign) scoped_refptr<base::WeakContainer> container;
-// Designed initializer.
-- (id)initWithContainer:(scoped_refptr<base::WeakContainer>)container;
-@end
-
-@implementation CRBWeakNSProtocolSentinel
-
-@synthesize container = container_;
-
-+ (scoped_refptr<base::WeakContainer>)containerForObject:(id)object {
-  if (object == nil)
-    return nullptr;
-  // The autoreleasePool is needed here as the call to objc_getAssociatedObject
-  // returns an autoreleased object which is better released sooner than later.
-  base::mac::ScopedNSAutoreleasePool pool;
-  CRBWeakNSProtocolSentinel* sentinel =
-      objc_getAssociatedObject(object, &sentinelObserverKey_);
-  if (!sentinel) {
-    base::scoped_nsobject<CRBWeakNSProtocolSentinel> newSentinel(
-        [[CRBWeakNSProtocolSentinel alloc]
-            initWithContainer:new base::WeakContainer(object)]);
-    sentinel = newSentinel;
-    objc_setAssociatedObject(object, &sentinelObserverKey_, sentinel,
-                             OBJC_ASSOCIATION_RETAIN);
-    // The retain count is 2. One retain is due to the alloc, the other to the
-    // association with the weak object.
-    DCHECK_EQ(2u, [sentinel retainCount]);
-  }
-  return [sentinel container];
-}
-
-- (id)initWithContainer:(scoped_refptr<base::WeakContainer>)container {
-  DCHECK(container.get());
-  self = [super init];
-  if (self)
-    container_ = container;
-  return self;
-}
-
-- (void)dealloc {
-  self.container->nullify();
-  [super dealloc];
-}
-
-@end
diff --git a/base/ios/weak_nsobject_unittest.mm b/base/ios/weak_nsobject_unittest.mm
deleted file mode 100644
index ba85217..0000000
--- a/base/ios/weak_nsobject_unittest.mm
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2013 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 "base/bind.h"
-#include "base/ios/weak_nsobject.h"
-#include "base/mac/scoped_nsobject.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/single_thread_task_runner.h"
-#include "base/threading/thread.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace base {
-namespace {
-
-TEST(WeakNSObjectTest, WeakNSObject) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  WeakNSObject<NSObject> w1(p1);
-  EXPECT_TRUE(w1);
-  p1.reset();
-  EXPECT_FALSE(w1);
-}
-
-TEST(WeakNSObjectTest, MultipleWeakNSObject) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  WeakNSObject<NSObject> w1(p1);
-  WeakNSObject<NSObject> w2(w1);
-  EXPECT_TRUE(w1);
-  EXPECT_TRUE(w2);
-  EXPECT_TRUE(w1.get() == w2.get());
-  p1.reset();
-  EXPECT_FALSE(w1);
-  EXPECT_FALSE(w2);
-}
-
-TEST(WeakNSObjectTest, WeakNSObjectDies) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  {
-    WeakNSObject<NSObject> w1(p1);
-    EXPECT_TRUE(w1);
-  }
-}
-
-TEST(WeakNSObjectTest, WeakNSObjectReset) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  WeakNSObject<NSObject> w1(p1);
-  EXPECT_TRUE(w1);
-  w1.reset();
-  EXPECT_FALSE(w1);
-  EXPECT_TRUE(p1);
-  EXPECT_TRUE([p1 description]);
-}
-
-TEST(WeakNSObjectTest, WeakNSObjectResetWithObject) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  scoped_nsobject<NSObject> p2([[NSObject alloc] init]);
-  WeakNSObject<NSObject> w1(p1);
-  EXPECT_TRUE(w1);
-  w1.reset(p2);
-  EXPECT_TRUE(w1);
-  EXPECT_TRUE([p1 description]);
-  EXPECT_TRUE([p2 description]);
-}
-
-TEST(WeakNSObjectTest, WeakNSObjectEmpty) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  WeakNSObject<NSObject> w1;
-  EXPECT_FALSE(w1);
-  w1.reset(p1);
-  EXPECT_TRUE(w1);
-  p1.reset();
-  EXPECT_FALSE(w1);
-}
-
-TEST(WeakNSObjectTest, WeakNSObjectCopy) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  WeakNSObject<NSObject> w1(p1);
-  WeakNSObject<NSObject> w2(w1);
-  EXPECT_TRUE(w1);
-  EXPECT_TRUE(w2);
-  p1.reset();
-  EXPECT_FALSE(w1);
-  EXPECT_FALSE(w2);
-}
-
-TEST(WeakNSObjectTest, WeakNSObjectAssignment) {
-  scoped_nsobject<NSObject> p1([[NSObject alloc] init]);
-  WeakNSObject<NSObject> w1(p1);
-  WeakNSObject<NSObject> w2;
-  EXPECT_FALSE(w2);
-  w2 = w1;
-  EXPECT_TRUE(w1);
-  EXPECT_TRUE(w2);
-  p1.reset();
-  EXPECT_FALSE(w1);
-  EXPECT_FALSE(w2);
-}
-
-// Touches |weak_data| by increasing its length by 1. Used to check that the
-// weak object can be dereferenced.
-void TouchWeakData(const WeakNSObject<NSMutableData>& weak_data) {
-  if (!weak_data)
-    return;
-  [weak_data increaseLengthBy:1];
-}
-
-// Makes a copy of |weak_object| on the current thread and posts a task to touch
-// the weak object on its original thread.
-void CopyWeakNSObjectAndPost(const WeakNSObject<NSMutableData>& weak_object,
-                             scoped_refptr<SingleThreadTaskRunner> runner) {
-  // Copy using constructor.
-  WeakNSObject<NSMutableData> weak_copy1(weak_object);
-  runner->PostTask(FROM_HERE, Bind(&TouchWeakData, weak_copy1));
-  // Copy using assignment operator.
-  WeakNSObject<NSMutableData> weak_copy2 = weak_object;
-  runner->PostTask(FROM_HERE, Bind(&TouchWeakData, weak_copy2));
-}
-
-// Tests that the weak object can be copied on a different thread.
-TEST(WeakNSObjectTest, WeakNSObjectCopyOnOtherThread) {
-  MessageLoop loop;
-  Thread other_thread("WeakNSObjectCopyOnOtherThread");
-  other_thread.Start();
-
-  scoped_nsobject<NSMutableData> data([[NSMutableData alloc] init]);
-  WeakNSObject<NSMutableData> weak(data);
-
-  scoped_refptr<SingleThreadTaskRunner> runner = loop.task_runner();
-  other_thread.task_runner()->PostTask(
-      FROM_HERE, Bind(&CopyWeakNSObjectAndPost, weak, runner));
-  other_thread.Stop();
-  RunLoop().RunUntilIdle();
-
-  // Check that TouchWeakData was called and the object touched twice.
-  EXPECT_EQ(2u, [data length]);
-}
-
-}  // namespace
-}  // namespace base
diff --git a/base/message_loop/message_pump_io_ios.cc b/base/message_loop/message_pump_io_ios.cc
deleted file mode 100644
index 9b43e8e..0000000
--- a/base/message_loop/message_pump_io_ios.cc
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright 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 "base/message_loop/message_pump_io_ios.h"
-
-namespace base {
-
-MessagePumpIOSForIO::FdWatchController::FdWatchController(
-    const Location& from_here)
-    : FdWatchControllerInterface(from_here) {}
-
-MessagePumpIOSForIO::FdWatchController::~FdWatchController() {
-  StopWatchingFileDescriptor();
-}
-
-bool MessagePumpIOSForIO::FdWatchController::StopWatchingFileDescriptor() {
-  if (fdref_ == NULL)
-    return true;
-
-  CFFileDescriptorDisableCallBacks(fdref_.get(), callback_types_);
-  if (pump_)
-    pump_->RemoveRunLoopSource(fd_source_);
-  fd_source_.reset();
-  fdref_.reset();
-  callback_types_ = 0;
-  pump_.reset();
-  watcher_ = NULL;
-  return true;
-}
-
-void MessagePumpIOSForIO::FdWatchController::Init(CFFileDescriptorRef fdref,
-                                                  CFOptionFlags callback_types,
-                                                  CFRunLoopSourceRef fd_source,
-                                                  bool is_persistent) {
-  DCHECK(fdref);
-  DCHECK(!fdref_.is_valid());
-
-  is_persistent_ = is_persistent;
-  fdref_.reset(fdref);
-  callback_types_ = callback_types;
-  fd_source_.reset(fd_source);
-}
-
-void MessagePumpIOSForIO::FdWatchController::OnFileCanReadWithoutBlocking(
-    int fd,
-    MessagePumpIOSForIO* pump) {
-  DCHECK(callback_types_ & kCFFileDescriptorReadCallBack);
-  watcher_->OnFileCanReadWithoutBlocking(fd);
-}
-
-void MessagePumpIOSForIO::FdWatchController::OnFileCanWriteWithoutBlocking(
-    int fd,
-    MessagePumpIOSForIO* pump) {
-  DCHECK(callback_types_ & kCFFileDescriptorWriteCallBack);
-  watcher_->OnFileCanWriteWithoutBlocking(fd);
-}
-
-MessagePumpIOSForIO::MessagePumpIOSForIO() : weak_factory_(this) {
-}
-
-MessagePumpIOSForIO::~MessagePumpIOSForIO() {
-}
-
-bool MessagePumpIOSForIO::WatchFileDescriptor(int fd,
-                                              bool persistent,
-                                              int mode,
-                                              FdWatchController* controller,
-                                              FdWatcher* delegate) {
-  DCHECK_GE(fd, 0);
-  DCHECK(controller);
-  DCHECK(delegate);
-  DCHECK(mode == WATCH_READ || mode == WATCH_WRITE || mode == WATCH_READ_WRITE);
-
-  // WatchFileDescriptor should be called on the pump thread. It is not
-  // threadsafe, and your watcher may never be registered.
-  DCHECK(watch_file_descriptor_caller_checker_.CalledOnValidThread());
-
-  CFFileDescriptorContext source_context = {0};
-  source_context.info = controller;
-
-  CFOptionFlags callback_types = 0;
-  if (mode & WATCH_READ) {
-    callback_types |= kCFFileDescriptorReadCallBack;
-  }
-  if (mode & WATCH_WRITE) {
-    callback_types |= kCFFileDescriptorWriteCallBack;
-  }
-
-  CFFileDescriptorRef fdref = controller->fdref_.get();
-  if (fdref == NULL) {
-    base::ScopedCFTypeRef<CFFileDescriptorRef> scoped_fdref(
-        CFFileDescriptorCreate(
-            kCFAllocatorDefault, fd, false, HandleFdIOEvent, &source_context));
-    if (scoped_fdref == NULL) {
-      NOTREACHED() << "CFFileDescriptorCreate failed";
-      return false;
-    }
-
-    CFFileDescriptorEnableCallBacks(scoped_fdref, callback_types);
-
-    // TODO(wtc): what should the 'order' argument be?
-    base::ScopedCFTypeRef<CFRunLoopSourceRef> scoped_fd_source(
-        CFFileDescriptorCreateRunLoopSource(
-            kCFAllocatorDefault, scoped_fdref, 0));
-    if (scoped_fd_source == NULL) {
-      NOTREACHED() << "CFFileDescriptorCreateRunLoopSource failed";
-      return false;
-    }
-    CFRunLoopAddSource(run_loop(), scoped_fd_source, kCFRunLoopCommonModes);
-
-    // Transfer ownership of scoped_fdref and fd_source to controller.
-    controller->Init(scoped_fdref.release(), callback_types,
-                     scoped_fd_source.release(), persistent);
-  } else {
-    // It's illegal to use this function to listen on 2 separate fds with the
-    // same |controller|.
-    if (CFFileDescriptorGetNativeDescriptor(fdref) != fd) {
-      NOTREACHED() << "FDs don't match: "
-                   << CFFileDescriptorGetNativeDescriptor(fdref)
-                   << " != " << fd;
-      return false;
-    }
-    if (persistent != controller->is_persistent_) {
-      NOTREACHED() << "persistent doesn't match";
-      return false;
-    }
-
-    // Combine old/new event masks.
-    CFFileDescriptorDisableCallBacks(fdref, controller->callback_types_);
-    controller->callback_types_ |= callback_types;
-    CFFileDescriptorEnableCallBacks(fdref, controller->callback_types_);
-  }
-
-  controller->set_watcher(delegate);
-  controller->set_pump(weak_factory_.GetWeakPtr());
-
-  return true;
-}
-
-void MessagePumpIOSForIO::RemoveRunLoopSource(CFRunLoopSourceRef source) {
-  CFRunLoopRemoveSource(run_loop(), source, kCFRunLoopCommonModes);
-}
-
-// static
-void MessagePumpIOSForIO::HandleFdIOEvent(CFFileDescriptorRef fdref,
-                                          CFOptionFlags callback_types,
-                                          void* context) {
-  FdWatchController* controller = static_cast<FdWatchController*>(context);
-  DCHECK_EQ(fdref, controller->fdref_.get());
-
-  // Ensure that |fdref| will remain live for the duration of this function
-  // call even if |controller| is deleted or |StopWatchingFileDescriptor()| is
-  // called, either of which will cause |fdref| to be released.
-  ScopedCFTypeRef<CFFileDescriptorRef> scoped_fdref(
-      fdref, base::scoped_policy::RETAIN);
-
-  int fd = CFFileDescriptorGetNativeDescriptor(fdref);
-  MessagePumpIOSForIO* pump = controller->pump().get();
-  DCHECK(pump);
-  if (callback_types & kCFFileDescriptorWriteCallBack)
-    controller->OnFileCanWriteWithoutBlocking(fd, pump);
-
-  // Perform the read callback only if the file descriptor has not been
-  // invalidated in the write callback. As |FdWatchController| invalidates
-  // its file descriptor on destruction, the file descriptor being valid also
-  // guarantees that |controller| has not been deleted.
-  if (callback_types & kCFFileDescriptorReadCallBack &&
-      CFFileDescriptorIsValid(fdref)) {
-    DCHECK_EQ(fdref, controller->fdref_.get());
-    controller->OnFileCanReadWithoutBlocking(fd, pump);
-  }
-
-  // Re-enable callbacks after the read/write if the file descriptor is still
-  // valid and the controller is persistent.
-  if (CFFileDescriptorIsValid(fdref) && controller->is_persistent_) {
-    DCHECK_EQ(fdref, controller->fdref_.get());
-    CFFileDescriptorEnableCallBacks(fdref, callback_types);
-  }
-}
-
-}  // namespace base
diff --git a/base/message_loop/message_pump_io_ios.h b/base/message_loop/message_pump_io_ios.h
deleted file mode 100644
index b390544..0000000
--- a/base/message_loop/message_pump_io_ios.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 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.
-
-#ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_IO_IOS_H_
-#define BASE_MESSAGE_LOOP_MESSAGE_PUMP_IO_IOS_H_
-
-#include "base/base_export.h"
-#include "base/mac/scoped_cffiledescriptorref.h"
-#include "base/mac/scoped_cftyperef.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/message_loop/message_pump_mac.h"
-#include "base/message_loop/watchable_io_message_pump_posix.h"
-#include "base/threading/thread_checker.h"
-
-namespace base {
-
-// This file introduces a class to monitor sockets and issue callbacks when
-// sockets are ready for I/O on iOS.
-class BASE_EXPORT MessagePumpIOSForIO : public MessagePumpNSRunLoop,
-                                        public WatchableIOMessagePumpPosix {
- public:
-  class FdWatchController : public FdWatchControllerInterface {
-   public:
-    explicit FdWatchController(const Location& from_here);
-
-    // Implicitly calls StopWatchingFileDescriptor.
-    ~FdWatchController() override;
-
-    // FdWatchControllerInterface:
-    bool StopWatchingFileDescriptor() override;
-
-   private:
-    friend class MessagePumpIOSForIO;
-    friend class MessagePumpIOSForIOTest;
-
-    // Called by MessagePumpIOSForIO, ownership of |fdref| and |fd_source|
-    // is transferred to this object.
-    void Init(CFFileDescriptorRef fdref,
-              CFOptionFlags callback_types,
-              CFRunLoopSourceRef fd_source,
-              bool is_persistent);
-
-    void set_pump(base::WeakPtr<MessagePumpIOSForIO> pump) { pump_ = pump; }
-    const base::WeakPtr<MessagePumpIOSForIO>& pump() const { return pump_; }
-
-    void set_watcher(FdWatcher* watcher) { watcher_ = watcher; }
-
-    void OnFileCanReadWithoutBlocking(int fd, MessagePumpIOSForIO* pump);
-    void OnFileCanWriteWithoutBlocking(int fd, MessagePumpIOSForIO* pump);
-
-    bool is_persistent_ = false;  // false if this event is one-shot.
-    base::mac::ScopedCFFileDescriptorRef fdref_;
-    CFOptionFlags callback_types_ = 0;
-    base::ScopedCFTypeRef<CFRunLoopSourceRef> fd_source_;
-    base::WeakPtr<MessagePumpIOSForIO> pump_;
-    FdWatcher* watcher_ = nullptr;
-
-    DISALLOW_COPY_AND_ASSIGN(FdWatchController);
-  };
-
-  MessagePumpIOSForIO();
-  ~MessagePumpIOSForIO() override;
-
-  bool WatchFileDescriptor(int fd,
-                           bool persistent,
-                           int mode,
-                           FdWatchController* controller,
-                           FdWatcher* delegate);
-
-  void RemoveRunLoopSource(CFRunLoopSourceRef source);
-
- private:
-  friend class MessagePumpIOSForIOTest;
-
-  static void HandleFdIOEvent(CFFileDescriptorRef fdref,
-                              CFOptionFlags callback_types,
-                              void* context);
-
-  ThreadChecker watch_file_descriptor_caller_checker_;
-
-  base::WeakPtrFactory<MessagePumpIOSForIO> weak_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(MessagePumpIOSForIO);
-};
-
-}  // namespace base
-
-#endif  // BASE_MESSAGE_LOOP_MESSAGE_PUMP_IO_IOS_H_
diff --git a/base/native_library_ios.mm b/base/native_library_ios.mm
deleted file mode 100644
index dbcafb4..0000000
--- a/base/native_library_ios.mm
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2015 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 "base/native_library.h"
-
-#include "base/logging.h"
-
-#include "base/strings/string_util.h"
-
-namespace base {
-
-std::string NativeLibraryLoadError::ToString() const {
-  return message;
-}
-
-NativeLibrary LoadNativeLibraryWithOptions(const base::FilePath& library_path,
-                                           const NativeLibraryOptions& options,
-                                           NativeLibraryLoadError* error) {
-  NOTIMPLEMENTED();
-  if (error)
-    error->message = "Not implemented.";
-  return nullptr;
-}
-
-void UnloadNativeLibrary(NativeLibrary library) {
-  NOTIMPLEMENTED();
-  DCHECK(!library);
-}
-
-void* GetFunctionPointerFromNativeLibrary(NativeLibrary library,
-                                          StringPiece name) {
-  NOTIMPLEMENTED();
-  return nullptr;
-}
-
-std::string GetNativeLibraryName(StringPiece name) {
-  DCHECK(IsStringASCII(name));
-  return name.as_string();
-}
-
-std::string GetLoadableModuleName(StringPiece name) {
-  return GetNativeLibraryName(name);
-}
-
-}  // namespace base
diff --git a/base/power_monitor/power_monitor_device_source_ios.mm b/base/power_monitor/power_monitor_device_source_ios.mm
deleted file mode 100644
index 3e86b2e..0000000
--- a/base/power_monitor/power_monitor_device_source_ios.mm
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2013 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 "base/power_monitor/power_monitor_device_source.h"
-
-#import <UIKit/UIKit.h>
-
-namespace base {
-
-bool PowerMonitorDeviceSource::IsOnBatteryPowerImpl() {
-  NOTIMPLEMENTED();
-  return false;
-}
-
-void PowerMonitorDeviceSource::PlatformInit() {
-  NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
-  id foreground =
-      [nc addObserverForName:UIApplicationWillEnterForegroundNotification
-                      object:nil
-                       queue:nil
-                  usingBlock:^(NSNotification* notification) {
-                      ProcessPowerEvent(RESUME_EVENT);
-                  }];
-  id background =
-      [nc addObserverForName:UIApplicationDidEnterBackgroundNotification
-                      object:nil
-                       queue:nil
-                  usingBlock:^(NSNotification* notification) {
-                      ProcessPowerEvent(SUSPEND_EVENT);
-                  }];
-  notification_observers_.push_back(foreground);
-  notification_observers_.push_back(background);
-}
-
-void PowerMonitorDeviceSource::PlatformDestroy() {
-  NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
-  for (std::vector<id>::iterator it = notification_observers_.begin();
-       it != notification_observers_.end(); ++it) {
-    [nc removeObserver:*it];
-  }
-  notification_observers_.clear();
-}
-
-}  // namespace base
diff --git a/base/process/launch_ios.cc b/base/process/launch_ios.cc
deleted file mode 100644
index 3c700f8..0000000
--- a/base/process/launch_ios.cc
+++ /dev/null
@@ -1,13 +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 "base/process/launch.h"
-
-namespace base {
-
-void RaiseProcessToHighPriority() {
-  // Impossible on iOS. Do nothing.
-}
-
-}  // namespace base
diff --git a/base/process/process_metrics_ios.cc b/base/process/process_metrics_ios.cc
deleted file mode 100644
index 83fc3d6..0000000
--- a/base/process/process_metrics_ios.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2013 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 "base/process/process_metrics.h"
-
-#include <limits.h>
-#include <mach/task.h>
-#include <stddef.h>
-
-#include "base/logging.h"
-#include "base/mac/scoped_mach_port.h"
-#include "base/memory/ptr_util.h"
-#include "base/numerics/safe_conversions.h"
-
-namespace base {
-
-ProcessMetrics::ProcessMetrics(ProcessHandle process) {}
-
-ProcessMetrics::~ProcessMetrics() {}
-
-// static
-std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
-    ProcessHandle process) {
-  return WrapUnique(new ProcessMetrics(process));
-}
-
-TimeDelta ProcessMetrics::GetCumulativeCPUUsage() {
-  NOTIMPLEMENTED();
-  return TimeDelta();
-}
-
-size_t GetMaxFds() {
-  static const rlim_t kSystemDefaultMaxFds = 256;
-  rlim_t max_fds;
-  struct rlimit nofile;
-  if (getrlimit(RLIMIT_NOFILE, &nofile)) {
-    // Error case: Take a best guess.
-    max_fds = kSystemDefaultMaxFds;
-  } else {
-    max_fds = nofile.rlim_cur;
-  }
-
-  if (max_fds > INT_MAX)
-    max_fds = INT_MAX;
-
-  return static_cast<size_t>(max_fds);
-}
-
-void IncreaseFdLimitTo(unsigned int max_descriptors) {
-  // Unimplemented.
-}
-
-size_t GetPageSize() {
-  return getpagesize();
-}
-
-// Bytes committed by the system.
-size_t GetSystemCommitCharge() {
-  NOTIMPLEMENTED();
-  return 0;
-}
-
-bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) {
-  struct host_basic_info hostinfo;
-  mach_msg_type_number_t count = HOST_BASIC_INFO_COUNT;
-  base::mac::ScopedMachSendRight host(mach_host_self());
-  int result = host_info(host.get(), HOST_BASIC_INFO,
-                         reinterpret_cast<host_info_t>(&hostinfo), &count);
-  if (result != KERN_SUCCESS)
-    return false;
-
-  DCHECK_EQ(HOST_BASIC_INFO_COUNT, count);
-  meminfo->total = static_cast<int>(hostinfo.max_mem / 1024);
-
-  vm_statistics64_data_t vm_info;
-  count = HOST_VM_INFO64_COUNT;
-
-  if (host_statistics64(host.get(), HOST_VM_INFO64,
-                        reinterpret_cast<host_info64_t>(&vm_info),
-                        &count) != KERN_SUCCESS) {
-    return false;
-  }
-  DCHECK_EQ(HOST_VM_INFO64_COUNT, count);
-
-  // Check that PAGE_SIZE is divisible by 1024 (2^10).
-  CHECK_EQ(PAGE_SIZE, (PAGE_SIZE >> 10) << 10);
-  meminfo->free = saturated_cast<int>(
-      PAGE_SIZE / 1024 * (vm_info.free_count - vm_info.speculative_count));
-  meminfo->speculative =
-      saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.speculative_count);
-  meminfo->file_backed =
-      saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.external_page_count);
-  meminfo->purgeable =
-      saturated_cast<int>(PAGE_SIZE / 1024 * vm_info.purgeable_count);
-
-  return true;
-}
-
-}  // namespace base
diff --git a/base/sys_info_ios.mm b/base/sys_info_ios.mm
deleted file mode 100644
index 60a7531..0000000
--- a/base/sys_info_ios.mm
+++ /dev/null
@@ -1,130 +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 "base/sys_info.h"
-
-#include <mach/mach.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <sys/sysctl.h>
-#include <sys/types.h>
-#import <UIKit/UIKit.h>
-
-#include "base/logging.h"
-#include "base/mac/scoped_mach_port.h"
-#include "base/mac/scoped_nsautorelease_pool.h"
-#include "base/macros.h"
-#include "base/process/process_metrics.h"
-#include "base/strings/sys_string_conversions.h"
-
-namespace base {
-
-namespace {
-
-// Queries sysctlbyname() for the given key and returns the value from the
-// system or the empty string on failure.
-std::string GetSysctlValue(const char* key_name) {
-  char value[256];
-  size_t len = arraysize(value);
-  if (sysctlbyname(key_name, &value, &len, nullptr, 0) == 0) {
-    DCHECK_GE(len, 1u);
-    DCHECK_EQ('\0', value[len - 1]);
-    return std::string(value, len - 1);
-  }
-  return std::string();
-}
-
-}  // namespace
-
-// static
-std::string SysInfo::OperatingSystemName() {
-  static dispatch_once_t get_system_name_once;
-  static std::string* system_name;
-  dispatch_once(&get_system_name_once, ^{
-      base::mac::ScopedNSAutoreleasePool pool;
-      system_name = new std::string(
-          SysNSStringToUTF8([[UIDevice currentDevice] systemName]));
-  });
-  // Examples of returned value: 'iPhone OS' on iPad 5.1.1
-  // and iPhone 5.1.1.
-  return *system_name;
-}
-
-// static
-std::string SysInfo::OperatingSystemVersion() {
-  static dispatch_once_t get_system_version_once;
-  static std::string* system_version;
-  dispatch_once(&get_system_version_once, ^{
-      base::mac::ScopedNSAutoreleasePool pool;
-      system_version = new std::string(
-          SysNSStringToUTF8([[UIDevice currentDevice] systemVersion]));
-  });
-  return *system_version;
-}
-
-// static
-void SysInfo::OperatingSystemVersionNumbers(int32_t* major_version,
-                                            int32_t* minor_version,
-                                            int32_t* bugfix_version) {
-  base::mac::ScopedNSAutoreleasePool pool;
-  std::string system_version = OperatingSystemVersion();
-  if (!system_version.empty()) {
-    // Try to parse out the version numbers from the string.
-    int num_read = sscanf(system_version.c_str(), "%d.%d.%d", major_version,
-                          minor_version, bugfix_version);
-    if (num_read < 1)
-      *major_version = 0;
-    if (num_read < 2)
-      *minor_version = 0;
-    if (num_read < 3)
-      *bugfix_version = 0;
-  }
-}
-
-// static
-int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
-  struct host_basic_info hostinfo;
-  mach_msg_type_number_t count = HOST_BASIC_INFO_COUNT;
-  base::mac::ScopedMachSendRight host(mach_host_self());
-  int result = host_info(host.get(),
-                         HOST_BASIC_INFO,
-                         reinterpret_cast<host_info_t>(&hostinfo),
-                         &count);
-  if (result != KERN_SUCCESS) {
-    NOTREACHED();
-    return 0;
-  }
-  DCHECK_EQ(HOST_BASIC_INFO_COUNT, count);
-  return static_cast<int64_t>(hostinfo.max_mem);
-}
-
-// static
-int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
-  SystemMemoryInfoKB info;
-  if (!GetSystemMemoryInfo(&info))
-    return 0;
-  // We should add inactive file-backed memory also but there is no such
-  // information from iOS unfortunately.
-  return static_cast<int64_t>(info.free + info.speculative) * 1024;
-}
-
-// static
-std::string SysInfo::CPUModelName() {
-  return GetSysctlValue("machdep.cpu.brand_string");
-}
-
-// static
-std::string SysInfo::HardwareModelName() {
-#if TARGET_OS_SIMULATOR
-  // On the simulator, "hw.machine" returns "i386" or "x86_64" which doesn't
-  // match the expected format, so supply a fake string here.
-  return "Simulator1,1";
-#else
-  // Note: This uses "hw.machine" instead of "hw.model" like the Mac code,
-  // because "hw.model" doesn't always return the right string on some devices.
-  return GetSysctlValue("hw.machine");
-#endif
-}
-
-}  // namespace base
diff --git a/base/test/ios/OWNERS b/base/test/ios/OWNERS
deleted file mode 100644
index 40a68c7..0000000
--- a/base/test/ios/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-rohitrao@chromium.org
diff --git a/base/test/ios/wait_util.h b/base/test/ios/wait_util.h
deleted file mode 100644
index e0c4c27..0000000
--- a/base/test/ios/wait_util.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2014 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.
-
-#ifndef BASE_TEST_IOS_WAIT_UTIL_H_
-#define BASE_TEST_IOS_WAIT_UTIL_H_
-
-#include "base/ios/block_types.h"
-#include "base/time/time.h"
-
-namespace base {
-namespace test {
-namespace ios {
-
-// Runs |action| if non-nil. Then, until either |condition| is true or |timeout|
-// expires, repetitively runs the current NSRunLoop and the current MessageLoop
-// (if |run_message_loop| is true). |condition| may be nil if there is no
-// condition to wait for; the NSRunLoop and current MessageLoop will be run run
-// until |timeout| expires. DCHECKs if |condition| is non-nil and |timeout|
-// expires before |condition| becomes true. If |timeout| is zero, a reasonable
-// default is used. Returns the time spent in the function.
-// DEPRECATED - Do not use in new code. http://crbug.com/784735
-TimeDelta TimeUntilCondition(ProceduralBlock action,
-                             ConditionBlock condition,
-                             bool run_message_loop,
-                             TimeDelta timeout);
-
-// Same as TimeUntilCondition, but doesn't run an action.
-// DEPRECATED - Do not use in new code. http://crbug.com/784735
-void WaitUntilCondition(ConditionBlock condition,
-                        bool run_message_loop,
-                        TimeDelta timeout);
-// DEPRECATED - Do not use in new code. http://crbug.com/784735
-void WaitUntilCondition(ConditionBlock condition);
-
-// Lets the run loop of the current thread process other messages
-// within the given maximum delay. This method may return before max_delay
-// elapsed.
-void SpinRunLoopWithMaxDelay(TimeDelta max_delay);
-
-// Lets the run loop of the current thread process other messages
-// within the given minimum delay. This method returns after |min_delay|
-// elapsed.
-void SpinRunLoopWithMinDelay(TimeDelta min_delay);
-
-}  // namespace ios
-}  // namespace test
-}  // namespace base
-
-#endif  // BASE_TEST_IOS_WAIT_UTIL_H_
diff --git a/base/test/ios/wait_util.mm b/base/test/ios/wait_util.mm
deleted file mode 100644
index 39a4115..0000000
--- a/base/test/ios/wait_util.mm
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2014 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.
-
-#import "base/test/ios/wait_util.h"
-
-#import <Foundation/Foundation.h>
-
-#include "base/logging.h"
-#include "base/mac/scoped_nsobject.h"
-#include "base/run_loop.h"
-#include "base/test/test_timeouts.h"
-#include "base/timer/elapsed_timer.h"
-
-namespace base {
-namespace test {
-namespace ios {
-
-TimeDelta TimeUntilCondition(ProceduralBlock action,
-                             ConditionBlock condition,
-                             bool run_message_loop,
-                             TimeDelta timeout) {
-  ElapsedTimer timer;
-  if (action)
-    action();
-  if (timeout.is_zero())
-    timeout = TestTimeouts::action_timeout();
-  const TimeDelta spin_delay(TimeDelta::FromMilliseconds(10));
-  bool condition_evaluation_result = false;
-  while (timer.Elapsed() < timeout &&
-         (!condition || !(condition_evaluation_result = condition()))) {
-    SpinRunLoopWithMaxDelay(spin_delay);
-    if (run_message_loop)
-      RunLoop().RunUntilIdle();
-  }
-  const TimeDelta elapsed = timer.Elapsed();
-  // If DCHECK is ever hit, check if |action| is doing something that is
-  // taking an unreasonably long time, or if |condition| does not come
-  // true quickly enough. Increase |timeout| only if necessary.
-  DCHECK(!condition || condition_evaluation_result);
-  return elapsed;
-}
-
-void WaitUntilCondition(ConditionBlock condition,
-                        bool run_message_loop,
-                        TimeDelta timeout) {
-  TimeUntilCondition(nil, condition, run_message_loop, timeout);
-}
-
-void WaitUntilCondition(ConditionBlock condition) {
-  WaitUntilCondition(condition, false, TimeDelta());
-}
-
-void SpinRunLoopWithMaxDelay(TimeDelta max_delay) {
-  scoped_nsobject<NSDate> beforeDate(
-      [[NSDate alloc] initWithTimeIntervalSinceNow:max_delay.InSecondsF()]);
-  [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
-                           beforeDate:beforeDate];
-}
-
-void SpinRunLoopWithMinDelay(TimeDelta min_delay) {
-  ElapsedTimer timer;
-  while (timer.Elapsed() < min_delay) {
-    SpinRunLoopWithMaxDelay(TimeDelta::FromMilliseconds(10));
-  }
-}
-
-}  // namespace ios
-}  // namespace test
-}  // namespace base
diff --git a/base/test/launcher/unit_test_launcher_ios.cc b/base/test/launcher/unit_test_launcher_ios.cc
deleted file mode 100644
index 0bb31f7..0000000
--- a/base/test/launcher/unit_test_launcher_ios.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2013 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 "base/test/launcher/unit_test_launcher.h"
-
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/logging.h"
-#include "base/mac/foundation_util.h"
-#include "base/test/gtest_util.h"
-#include "base/test/test_switches.h"
-
-namespace base {
-
-int LaunchUnitTests(int argc,
-                    char** argv,
-                    RunTestSuiteCallback run_test_suite) {
-  CHECK(CommandLine::InitializedForCurrentProcess() ||
-        CommandLine::Init(argc, argv));
-  const CommandLine* command_line = CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(switches::kTestLauncherListTests)) {
-    FilePath list_path(command_line->GetSwitchValuePath(
-        switches::kTestLauncherListTests));
-    if (WriteCompiledInTestsToFile(list_path)) {
-      return 0;
-    } else {
-      LOG(ERROR) << "Failed to write list of tests.";
-      return 1;
-    }
-  } else if (command_line->HasSwitch(
-                 switches::kTestLauncherPrintWritablePath)) {
-    fprintf(stdout, "%s", mac::GetUserLibraryPath().value().c_str());
-    fflush(stdout);
-    return 0;
-  }
-
-  return std::move(run_test_suite).Run();
-}
-
-}  // namespace base
diff --git a/base/test/test_listener_ios.h b/base/test/test_listener_ios.h
deleted file mode 100644
index c312250..0000000
--- a/base/test/test_listener_ios.h
+++ /dev/null
@@ -1,17 +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.
-
-#ifndef BASE_TEST_TEST_LISTENER_IOS_H_
-#define BASE_TEST_TEST_LISTENER_IOS_H_
-
-namespace base {
-namespace test_listener_ios {
-
-// Register an IOSRunLoopListener.
-void RegisterTestEndListener();
-
-}  // namespace test_listener_ios
-}  // namespace base
-
-#endif  // BASE_TEST_TEST_LISTENER_IOS_H_
diff --git a/base/test/test_listener_ios.mm b/base/test/test_listener_ios.mm
deleted file mode 100644
index 12cf5bb..0000000
--- a/base/test/test_listener_ios.mm
+++ /dev/null
@@ -1,45 +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 "base/test/test_listener_ios.h"
-
-#import <Foundation/Foundation.h>
-
-#include "base/mac/scoped_nsautorelease_pool.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-// The iOS watchdog timer will kill an app that doesn't spin the main event
-// loop often enough. This uses a Gtest TestEventListener to spin the current
-// loop after each test finishes. However, if any individual test takes too
-// long, it is still possible that the app will get killed.
-
-namespace {
-
-class IOSRunLoopListener : public testing::EmptyTestEventListener {
- public:
-  virtual void OnTestEnd(const testing::TestInfo& test_info);
-};
-
-void IOSRunLoopListener::OnTestEnd(const testing::TestInfo& test_info) {
-  base::mac::ScopedNSAutoreleasePool scoped_pool;
-
-  // At the end of the test, spin the default loop for a moment.
-  NSDate* stop_date = [NSDate dateWithTimeIntervalSinceNow:0.001];
-  [[NSRunLoop currentRunLoop] runUntilDate:stop_date];
-}
-
-}  // namespace
-
-
-namespace base {
-namespace test_listener_ios {
-
-void RegisterTestEndListener() {
-  testing::TestEventListeners& listeners =
-      testing::UnitTest::GetInstance()->listeners();
-  listeners.Append(new IOSRunLoopListener);
-}
-
-}  // namespace test_listener_ios
-}  // namespace base
diff --git a/base/test/test_support_ios.h b/base/test/test_support_ios.h
deleted file mode 100644
index c71cf0d..0000000
--- a/base/test/test_support_ios.h
+++ /dev/null
@@ -1,24 +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.
-
-#ifndef BASE_TEST_TEST_SUPPORT_IOS_H_
-#define BASE_TEST_TEST_SUPPORT_IOS_H_
-
-#include "base/test/test_suite.h"
-
-namespace base {
-
-// Inits the message loop for tests on iOS.
-void InitIOSTestMessageLoop();
-
-// Inits the run hook for tests on iOS.
-void InitIOSRunHook(TestSuite* suite, int argc, char* argv[]);
-
-// Launches an iOS app that runs the tests in the suite passed to
-// InitIOSRunHook.
-void RunTestsFromIOSApp();
-
-}  // namespace base
-
-#endif  // BASE_TEST_TEST_SUPPORT_IOS_H_
diff --git a/base/test/test_support_ios.mm b/base/test/test_support_ios.mm
deleted file mode 100644
index 03c7631..0000000
--- a/base/test/test_support_ios.mm
+++ /dev/null
@@ -1,219 +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.
-
-#import <UIKit/UIKit.h>
-
-#include "base/debug/debugger.h"
-#include "base/logging.h"
-#include "base/mac/scoped_nsautorelease_pool.h"
-#include "base/mac/scoped_nsobject.h"
-#include "base/message_loop/message_loop.h"
-#include "base/message_loop/message_pump_default.h"
-#include "base/test/test_suite.h"
-#include "testing/coverage_util_ios.h"
-
-// Springboard will kill any iOS app that fails to check in after launch within
-// a given time. Starting a UIApplication before invoking TestSuite::Run
-// prevents this from happening.
-
-// InitIOSRunHook saves the TestSuite and argc/argv, then invoking
-// RunTestsFromIOSApp calls UIApplicationMain(), providing an application
-// delegate class: ChromeUnitTestDelegate. The delegate implements
-// application:didFinishLaunchingWithOptions: to invoke the TestSuite's Run
-// method.
-
-// Since the executable isn't likely to be a real iOS UI, the delegate puts up a
-// window displaying the app name. If a bunch of apps using MainHook are being
-// run in a row, this provides an indication of which one is currently running.
-
-static base::TestSuite* g_test_suite = NULL;
-static int g_argc;
-static char** g_argv;
-
-@interface UIApplication (Testing)
-- (void)_terminateWithStatus:(int)status;
-@end
-
-#if TARGET_IPHONE_SIMULATOR
-// Xcode 6 introduced behavior in the iOS Simulator where the software
-// keyboard does not appear if a hardware keyboard is connected. The following
-// declaration allows this behavior to be overriden when the app starts up.
-@interface UIKeyboardImpl
-+ (instancetype)sharedInstance;
-- (void)setAutomaticMinimizationEnabled:(BOOL)enabled;
-- (void)setSoftwareKeyboardShownByTouch:(BOOL)enabled;
-@end
-#endif  // TARGET_IPHONE_SIMULATOR
-
-@interface ChromeUnitTestDelegate : NSObject {
-  base::scoped_nsobject<UIWindow> _window;
-}
-- (void)runTests;
-@end
-
-@implementation ChromeUnitTestDelegate
-
-- (BOOL)application:(UIApplication *)application
-    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
-#if TARGET_IPHONE_SIMULATOR
-  // Xcode 6 introduced behavior in the iOS Simulator where the software
-  // keyboard does not appear if a hardware keyboard is connected. The following
-  // calls override this behavior by ensuring that the software keyboard is
-  // always shown.
-  [[UIKeyboardImpl sharedInstance] setAutomaticMinimizationEnabled:NO];
-  [[UIKeyboardImpl sharedInstance] setSoftwareKeyboardShownByTouch:YES];
-#endif  // TARGET_IPHONE_SIMULATOR
-
-  CGRect bounds = [[UIScreen mainScreen] bounds];
-
-  // Yes, this is leaked, it's just to make what's running visible.
-  _window.reset([[UIWindow alloc] initWithFrame:bounds]);
-  [_window setBackgroundColor:[UIColor whiteColor]];
-  [_window makeKeyAndVisible];
-
-  // Add a label with the app name.
-  UILabel* label = [[[UILabel alloc] initWithFrame:bounds] autorelease];
-  label.text = [[NSProcessInfo processInfo] processName];
-  label.textAlignment = NSTextAlignmentCenter;
-  [_window addSubview:label];
-
-  // An NSInternalInconsistencyException is thrown if the app doesn't have a
-  // root view controller. Set an empty one here.
-  [_window setRootViewController:[[[UIViewController alloc] init] autorelease]];
-
-  if ([self shouldRedirectOutputToFile])
-    [self redirectOutput];
-
-  // Queue up the test run.
-  [self performSelector:@selector(runTests)
-             withObject:nil
-             afterDelay:0.1];
-  return YES;
-}
-
-// Returns true if the gtest output should be redirected to a file, then sent
-// to NSLog when compleete. This redirection is used because gtest only writes
-// output to stdout, but results must be written to NSLog in order to show up in
-// the device log that is retrieved from the device by the host.
-- (BOOL)shouldRedirectOutputToFile {
-#if !TARGET_IPHONE_SIMULATOR
-  return !base::debug::BeingDebugged();
-#endif  // TARGET_IPHONE_SIMULATOR
-  return NO;
-}
-
-// Returns the path to the directory to store gtest output files.
-- (NSString*)outputPath {
-  NSArray* searchPath =
-      NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
-                                          NSUserDomainMask,
-                                          YES);
-  CHECK([searchPath count] > 0) << "Failed to get the Documents folder";
-  return [searchPath objectAtIndex:0];
-}
-
-// Returns the path to file that stdout is redirected to.
-- (NSString*)stdoutPath {
-  return [[self outputPath] stringByAppendingPathComponent:@"stdout.log"];
-}
-
-// Returns the path to file that stderr is redirected to.
-- (NSString*)stderrPath {
-  return [[self outputPath] stringByAppendingPathComponent:@"stderr.log"];
-}
-
-// Redirects stdout and stderr to files in the Documents folder in the app's
-// sandbox.
-- (void)redirectOutput {
-  freopen([[self stdoutPath] UTF8String], "w+", stdout);
-  freopen([[self stderrPath] UTF8String], "w+", stderr);
-}
-
-// Reads the redirected gtest output from a file and writes it to NSLog.
-- (void)writeOutputToNSLog {
-  // Close the redirected stdout and stderr files so that the content written to
-  // NSLog doesn't end up in these files.
-  fclose(stdout);
-  fclose(stderr);
-  for (NSString* path in @[ [self stdoutPath], [self stderrPath]]) {
-    NSString* content = [NSString stringWithContentsOfFile:path
-                                                  encoding:NSUTF8StringEncoding
-                                                     error:NULL];
-    NSArray* lines = [content componentsSeparatedByCharactersInSet:
-        [NSCharacterSet newlineCharacterSet]];
-
-    NSLog(@"Writing contents of %@ to NSLog", path);
-    for (NSString* line in lines) {
-      NSLog(@"%@", line);
-    }
-  }
-}
-
-- (void)runTests {
-  coverage_util::ConfigureCoverageReportPath();
-
-  int exitStatus = g_test_suite->Run();
-
-  if ([self shouldRedirectOutputToFile])
-    [self writeOutputToNSLog];
-
-  // If a test app is too fast, it will exit before Instruments has has a
-  // a chance to initialize and no test results will be seen.
-  // TODO(crbug.com/137010): Figure out how much time is actually needed, and
-  // sleep only to make sure that much time has elapsed since launch.
-  [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];
-  _window.reset();
-
-  // Use the hidden selector to try and cleanly take down the app (otherwise
-  // things can think the app crashed even on a zero exit status).
-  UIApplication* application = [UIApplication sharedApplication];
-  [application _terminateWithStatus:exitStatus];
-
-  exit(exitStatus);
-}
-
-@end
-
-namespace {
-
-std::unique_ptr<base::MessagePump> CreateMessagePumpForUIForTests() {
-  // A default MessagePump will do quite nicely in tests.
-  return std::unique_ptr<base::MessagePump>(new base::MessagePumpDefault());
-}
-
-}  // namespace
-
-namespace base {
-
-void InitIOSTestMessageLoop() {
-  MessageLoop::InitMessagePumpForUIFactory(&CreateMessagePumpForUIForTests);
-}
-
-void InitIOSRunHook(TestSuite* suite, int argc, char* argv[]) {
-  g_test_suite = suite;
-  g_argc = argc;
-  g_argv = argv;
-}
-
-void RunTestsFromIOSApp() {
-  // When TestSuite::Run is invoked it calls RunTestsFromIOSApp(). On the first
-  // invocation, this method fires up an iOS app via UIApplicationMain. Since
-  // UIApplicationMain does not return until the app exits, control does not
-  // return to the initial TestSuite::Run invocation, so the app invokes
-  // TestSuite::Run a second time and since |ran_hook| is true at this point,
-  // this method is a no-op and control returns to TestSuite:Run so that test
-  // are executed. Once the app exits, RunTestsFromIOSApp calls exit() so that
-  // control is not returned to the initial invocation of TestSuite::Run.
-  static bool ran_hook = false;
-  if (!ran_hook) {
-    ran_hook = true;
-    mac::ScopedNSAutoreleasePool pool;
-    int exit_status = UIApplicationMain(g_argc, g_argv, nil,
-                                        @"ChromeUnitTestDelegate");
-    exit(exit_status);
-  }
-}
-
-}  // namespace base