diff --git a/DEPS b/DEPS
index b51fa38..0cca1ab 100644
--- a/DEPS
+++ b/DEPS
@@ -39,7 +39,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '9342bd8219227bfab7bf33f3d842122612bc22b8',
+  'skia_revision': 'c99b8f0351850cc1901fe359feb4ca357141346f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -201,7 +201,7 @@
    Var('chromium_git') + '/chromium/third_party/ffmpeg.git' + '@' + '0ba7f6830534bc2afbbe24200cc51602272fc706',
 
   'src/third_party/libjingle/source/talk':
-    Var('chromium_git') + '/external/webrtc/trunk/talk.git' + '@' + '3c48e13de1daf70d65f675d7a6bc02ea194a6192', # commit position 12686
+    Var('chromium_git') + '/external/webrtc/trunk/talk.git' + '@' + 'c51edbc97d541bfd39139683c78c16874c6645ab', # commit position 12750
 
   'src/third_party/usrsctp/usrsctplib':
     Var('chromium_git') + '/external/github.com/sctplab/usrsctp' + '@' + 'c60ec8b35c3fe6027d7a3faae89d1c8d7dd3ce98',
@@ -228,7 +228,7 @@
    Var('chromium_git') + '/native_client/src/third_party/scons-2.0.1.git' + '@' + '1c1550e17fc26355d08627fbdec13d8291227067',
 
   'src/third_party/webrtc':
-    Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + 'a52f9dbccbc867f9dfd14fbbd42714ad8dfde514', # commit position 12729
+    Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + '431aeebbe3c5950d3ecbd3c81083f4daac71b09a', # commit position 12753
 
   'src/third_party/openmax_dl':
     Var('chromium_git') + '/external/webrtc/deps/third_party/openmax.git' + '@' +  Var('openmax_dl_revision'),
diff --git a/net/disk_cache/disk_cache_perftest.cc b/net/disk_cache/disk_cache_perftest.cc
index 798c38a..959143b 100644
--- a/net/disk_cache/disk_cache_perftest.cc
+++ b/net/disk_cache/disk_cache_perftest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <limits>
 #include <string>
 
 #include "base/bind.h"
@@ -9,6 +10,7 @@
 #include "base/files/file_enumerator.h"
 #include "base/files/file_path.h"
 #include "base/hash.h"
+#include "base/process/process_metrics.h"
 #include "base/strings/string_util.h"
 #include "base/test/perf_time_logger.h"
 #include "base/test/test_file_util.h"
@@ -29,12 +31,37 @@
 
 namespace {
 
+size_t MaybeGetMaxFds() {
+#if defined(OS_POSIX)
+  return base::GetMaxFds();
+#else
+  return std::numeric_limits<size_t>::max();
+#endif
+}
+
+void MaybeSetFdLimit(unsigned int max_descriptors) {
+#if defined(OS_POSIX)
+  base::SetFdLimit(max_descriptors);
+#endif
+}
+
 struct TestEntry {
   std::string key;
   int data_len;
 };
 
 class DiskCachePerfTest : public DiskCacheTestWithCache {
+ public:
+  DiskCachePerfTest() : saved_fd_limit_(MaybeGetMaxFds()) {
+    if (saved_fd_limit_ < kFdLimitForCacheTests)
+      MaybeSetFdLimit(kFdLimitForCacheTests);
+  }
+
+  ~DiskCachePerfTest() override {
+    if (saved_fd_limit_ < kFdLimitForCacheTests)
+      MaybeSetFdLimit(kFdLimitForCacheTests);
+  }
+
  protected:
   enum class WhatToRead {
     HEADERS_ONLY,
@@ -49,11 +76,16 @@
   // Complete perf tests.
   void CacheBackendPerformance();
 
+  const size_t kFdLimitForCacheTests = 8192;
+
   const int kNumEntries = 1000;
   const int kHeadersSize = 200;
   const int kBodySize = 16 * 1024 - 1;
 
   std::vector<TestEntry> entries_;
+
+ private:
+  const size_t saved_fd_limit_;
 };
 
 // Creates num_entries on the cache, and writes 200 bytes of metadata and up
@@ -180,12 +212,15 @@
        file_path = enumerator.Next()) {
     ASSERT_TRUE(base::EvictFileFromSystemCache(file_path));
   }
-  // And, cache directories.
+#if defined(OS_LINUX)
+  // And, cache directories, on platforms where the eviction utility supports
+  // this (currently Linux only).
   if (simple_cache_mode_) {
     ASSERT_TRUE(
         base::EvictFileFromSystemCache(cache_path_.AppendASCII("index-dir")));
   }
   ASSERT_TRUE(base::EvictFileFromSystemCache(cache_path_));
+#endif
 
   DisableFirstCleanup();
   InitCache();
diff --git a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
index 2055922e..7a48e0e 100644
--- a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
+++ b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
@@ -638,7 +638,7 @@
     if (!m_invalidatedDocuments.size())
         return;
     HeapHashSet<Member<Document>> invalidatedDocuments;
-    m_invalidatedDocuments.swap(&invalidatedDocuments);
+    m_invalidatedDocuments.swap(invalidatedDocuments);
     for (Document* document: invalidatedDocuments)
         updateActiveStyleSheets(document, ExistingFrontendRefresh);
 }
diff --git a/third_party/WebKit/Source/platform/heap/HeapAllocator.h b/third_party/WebKit/Source/platform/heap/HeapAllocator.h
index 8fa22d8..73a9c00 100644
--- a/third_party/WebKit/Source/platform/heap/HeapAllocator.h
+++ b/third_party/WebKit/Source/platform/heap/HeapAllocator.h
@@ -162,22 +162,6 @@
     }
 #endif
 
-    template<typename T>
-    struct ResultType {
-        using Type = T*;
-    };
-
-    template<typename T>
-    struct OtherType {
-        using Type = T*;
-    };
-
-    template<typename T>
-    static T& getOther(T* other)
-    {
-        return *other;
-    }
-
     static void enterGCForbiddenScope()
     {
         ThreadState::current()->enterGCForbiddenScope();
diff --git a/third_party/WebKit/Source/platform/heap/HeapTest.cpp b/third_party/WebKit/Source/platform/heap/HeapTest.cpp
index 0e6147d8..5adcc2b 100644
--- a/third_party/WebKit/Source/platform/heap/HeapTest.cpp
+++ b/third_party/WebKit/Source/platform/heap/HeapTest.cpp
@@ -2779,7 +2779,7 @@
             set2->swap(cset2);
             set->swap(cset2);
             cset1.swap(cset2);
-            cset2.swap(set2);
+            cset2.swap(*set2);
 
             MemberCountedSet& cCountedSet = container->set3;
             set3->swap(cCountedSet);
@@ -2787,10 +2787,10 @@
             set3->swap(cCountedSet);
 
             // Triple swap.
-            container->map.swap(memberMember2);
+            container->map.swap(*memberMember2);
             MemberMember& containedMap = container->map;
             memberMember3->swap(containedMap);
-            memberMember3->swap(memberMember);
+            memberMember3->swap(*memberMember);
 
             EXPECT_TRUE(memberMember->get(one) == two);
             EXPECT_TRUE(memberMember->get(two) == three);
diff --git a/third_party/WebKit/Source/wtf/HashMap.h b/third_party/WebKit/Source/wtf/HashMap.h
index 16efe2f..77a1a3b1 100644
--- a/third_party/WebKit/Source/wtf/HashMap.h
+++ b/third_party/WebKit/Source/wtf/HashMap.h
@@ -81,12 +81,6 @@
         m_impl.swap(ref.m_impl);
     }
 
-    void swap(typename Allocator::template OtherType<HashMap>::Type other)
-    {
-        HashMap& ref = Allocator::getOther(other);
-        m_impl.swap(ref.m_impl);
-    }
-
     unsigned size() const;
     unsigned capacity() const;
     void reserveCapacityForSize(unsigned size)
diff --git a/third_party/WebKit/Source/wtf/HashSet.h b/third_party/WebKit/Source/wtf/HashSet.h
index 7b57cbbf..7cba178df 100644
--- a/third_party/WebKit/Source/wtf/HashSet.h
+++ b/third_party/WebKit/Source/wtf/HashSet.h
@@ -62,12 +62,6 @@
         m_impl.swap(ref.m_impl);
     }
 
-    void swap(typename Allocator::template OtherType<HashSet>::Type other)
-    {
-        HashSet& ref = Allocator::getOther(other);
-        m_impl.swap(ref.m_impl);
-    }
-
     unsigned size() const;
     unsigned capacity() const;
     bool isEmpty() const;
diff --git a/third_party/WebKit/Source/wtf/allocator/PartitionAllocator.h b/third_party/WebKit/Source/wtf/allocator/PartitionAllocator.h
index 2e0e0a9..e10e16f 100644
--- a/third_party/WebKit/Source/wtf/allocator/PartitionAllocator.h
+++ b/third_party/WebKit/Source/wtf/allocator/PartitionAllocator.h
@@ -127,17 +127,6 @@
 
     static bool isAllocationAllowed() { return true; }
 
-    template<typename T>
-    struct OtherType {
-        typedef T* Type;
-    };
-
-    template<typename T>
-    static T& getOther(T* other)
-    {
-        return *other;
-    }
-
     static void enterGCForbiddenScope() { }
     static void leaveGCForbiddenScope() { }
 
diff --git a/third_party/libjingle/README.chromium b/third_party/libjingle/README.chromium
index 8cc985d1..3a96cd9 100644
--- a/third_party/libjingle/README.chromium
+++ b/third_party/libjingle/README.chromium
@@ -1,7 +1,7 @@
 Name: libjingle
 URL: http://www.webrtc.org
 Version: unknown
-Revision: 12686
+Revision: 12750
 License: BSD
 License File: source/talk/COPYING
 Security Critical: yes