diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
index 069cd9aa..01feb5ff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
@@ -363,8 +363,8 @@
     @Override
     public ProfileDataCache getProfileDataCache() {
         if (mProfileDataCache == null) {
-            mProfileDataCache = new ProfileDataCache(FirstRunActivity.this, null);
-            mProfileDataCache.setProfile(Profile.getLastUsedProfile());
+            mProfileDataCache =
+                    new ProfileDataCache(FirstRunActivity.this, Profile.getLastUsedProfile());
         }
         return mProfileDataCache;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ProfileDataCache.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ProfileDataCache.java
index 1c3c5fe..2078786 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ProfileDataCache.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ProfileDataCache.java
@@ -16,6 +16,7 @@
 import android.graphics.PorterDuffXfermode;
 import android.graphics.Rect;
 
+import org.chromium.base.Callback;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.profiles.ProfileDownloader;
@@ -57,8 +58,6 @@
     private Profile mProfile;
 
     public ProfileDataCache(Context context, Profile profile) {
-        ProfileDownloader.addObserver(this);
-
         mContext = context;
         mProfile = profile;
 
@@ -72,15 +71,8 @@
                 R.drawable.fre_placeholder);
         mPlaceholderImage = getCroppedBitmap(placeHolder);
 
-        update();
-    }
+        ProfileDownloader.addObserver(this);
 
-    /**
-     * Sets the profile to use for the fetcher and triggers the update.
-     * @param profile A profile to use.
-     */
-    public void setProfile(Profile profile) {
-        mProfile = profile;
         update();
     }
 
@@ -89,15 +81,17 @@
      * Fetched data will be sent to observers of ProfileDownloader.
      */
     public void update() {
-        if (mProfile == null) return;
-
-        Account[] accounts = AccountManagerHelper.get().getGoogleAccounts();
-        for (int i = 0; i < accounts.length; i++) {
-            if (mCacheEntries.get(accounts[i].name) == null) {
-                ProfileDownloader.startFetchingAccountInfoFor(
-                        mContext, mProfile, accounts[i].name, mImageSizePx, true);
+        AccountManagerHelper.get().getGoogleAccounts(new Callback<Account[]>() {
+            @Override
+            public void onResult(Account[] result) {
+                for (Account account : result) {
+                    if (mCacheEntries.get(account.name) == null) {
+                        ProfileDownloader.startFetchingAccountInfoFor(
+                                mContext, mProfile, account.name, mImageSizePx, true);
+                    }
+                }
             }
-        }
+        });
     }
 
     /**
@@ -143,8 +137,9 @@
             Bitmap bitmap) {
         bitmap = getCroppedBitmap(bitmap);
         mCacheEntries.put(accountId, new CacheEntry(bitmap, fullName, givenName));
-        if (mObserver != null) mObserver.onProfileDownloaded(accountId, fullName, givenName,
-                bitmap);
+        if (mObserver != null) {
+            mObserver.onProfileDownloaded(accountId, fullName, givenName, bitmap);
+        }
     }
 
     private Bitmap getCroppedBitmap(Bitmap bitmap) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninAndSyncView.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninAndSyncView.java
index c44db72..9e9711a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninAndSyncView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninAndSyncView.java
@@ -252,8 +252,10 @@
     }
 
     private ViewState getStateForStartUsing() {
-        assert mAccessPoint == SigninAccessPoint.RECENT_TABS
-                : "This should not be showing from bookmarks";
+        // TODO(peconn): Ensure this state is never seen when used for bookmarks.
+        // State is updated before this view is removed, so this invalid state happens, but is not
+        // visible. I want there to be a guarantee that this state is never seen, but to do so would
+        // require some code restructuring.
 
         return new ViewState(R.string.ntp_recent_tabs_sync_promo_instructions,
                 new ButtonAbsent(), new ButtonAbsent());
diff --git a/chrome/browser/net/chrome_extensions_network_delegate.cc b/chrome/browser/net/chrome_extensions_network_delegate.cc
index d08dcec6..bc3330ee 100644
--- a/chrome/browser/net/chrome_extensions_network_delegate.cc
+++ b/chrome/browser/net/chrome_extensions_network_delegate.cc
@@ -85,8 +85,8 @@
   if (info->GetAssociatedRenderFrame(&process_id, &render_frame_id)) {
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
-        base::Bind(&NotifyEPMRequestStatus, status, profile_id,
-                   request->identifier(), process_id, render_frame_id));
+        base::BindOnce(&NotifyEPMRequestStatus, status, profile_id,
+                       request->identifier(), process_id, render_frame_id));
   }
 }
 
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
index 878fe38e..55eb0d9 100644
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -111,7 +111,7 @@
   if (!target_url.SchemeIsHTTPOrHTTPS())
     return;
   BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
-                          base::Bind(&ReportInvalidReferrerSendOnUI));
+                          base::BindOnce(&ReportInvalidReferrerSendOnUI));
   base::debug::DumpWithoutCrashing();
   NOTREACHED();
 }
@@ -416,10 +416,9 @@
   if (info) {
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
-        base::Bind(&TabSpecificContentSettings::CookiesRead,
-                   info->GetWebContentsGetterForRequest(),
-                   request.url(), request.first_party_for_cookies(),
-                   cookie_list, !allow));
+        base::BindOnce(&TabSpecificContentSettings::CookiesRead,
+                       info->GetWebContentsGetterForRequest(), request.url(),
+                       request.first_party_for_cookies(), cookie_list, !allow));
   }
 
   return allow;
@@ -439,10 +438,10 @@
   if (info) {
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
-        base::Bind(&TabSpecificContentSettings::CookieChanged,
-                   info->GetWebContentsGetterForRequest(),
-                   request.url(), request.first_party_for_cookies(),
-                   cookie_line, *options, !allow));
+        base::BindOnce(&TabSpecificContentSettings::CookieChanged,
+                       info->GetWebContentsGetterForRequest(), request.url(),
+                       request.first_party_for_cookies(), cookie_line, *options,
+                       !allow));
   }
 
   return allow;
diff --git a/chrome/browser/net/crl_set_fetcher.cc b/chrome/browser/net/crl_set_fetcher.cc
index 3b99a24..f56053f 100644
--- a/chrome/browser/net/crl_set_fetcher.cc
+++ b/chrome/browser/net/crl_set_fetcher.cc
@@ -46,7 +46,7 @@
 
   if (!BrowserThread::PostTask(
           BrowserThread::FILE, FROM_HERE,
-          base::Bind(&CRLSetFetcher::DoInitialLoadFromDisk, this))) {
+          base::BindOnce(&CRLSetFetcher::DoInitialLoadFromDisk, this))) {
     NOTREACHED();
   }
 }
@@ -59,7 +59,7 @@
   SetCRLSetFilePath(path);
   if (!BrowserThread::PostTask(
           BrowserThread::FILE, FROM_HERE,
-          base::Bind(&CRLSetFetcher::DoDeleteFromDisk, this))) {
+          base::BindOnce(&CRLSetFetcher::DoDeleteFromDisk, this))) {
     NOTREACHED();
   }
 }
@@ -76,12 +76,9 @@
 
   // Get updates, advertising the sequence number of the CRL set that we just
   // loaded, if any.
-  if (!BrowserThread::PostTask(
-          BrowserThread::UI, FROM_HERE,
-          base::Bind(
-              &CRLSetFetcher::RegisterComponent,
-              this,
-              sequence_of_loaded_crl))) {
+  if (!BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+                               base::BindOnce(&CRLSetFetcher::RegisterComponent,
+                                              this, sequence_of_loaded_crl))) {
     NOTREACHED();
   }
 }
@@ -106,10 +103,9 @@
 
   VLOG(1) << "Loaded " << crl_set_bytes.size() << " bytes of CRL set from disk";
 
-  if (!BrowserThread::PostTask(
-          BrowserThread::IO, FROM_HERE,
-          base::Bind(
-              &CRLSetFetcher::SetCRLSetIfNewer, this, *out_crl_set))) {
+  if (!BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+                               base::BindOnce(&CRLSetFetcher::SetCRLSetIfNewer,
+                                              this, *out_crl_set))) {
     NOTREACHED();
   }
 }
@@ -237,8 +233,7 @@
 
   if (!BrowserThread::PostTask(
           BrowserThread::IO, FROM_HERE,
-          base::Bind(
-              &CRLSetFetcher::SetCRLSetIfNewer, this, crl_set_))) {
+          base::BindOnce(&CRLSetFetcher::SetCRLSetIfNewer, this, crl_set_))) {
     NOTREACHED();
   }
 
diff --git a/chrome/browser/net/dns_probe_browsertest.cc b/chrome/browser/net/dns_probe_browsertest.cc
index 0941c20..94b24b55a 100644
--- a/chrome/browser/net/dns_probe_browsertest.cc
+++ b/chrome/browser/net/dns_probe_browsertest.cc
@@ -40,6 +40,7 @@
 #include "net/url_request/url_request_job.h"
 
 using base::Bind;
+using base::BindOnce;
 using base::Callback;
 using base::Closure;
 using base::ConstRef;
@@ -507,9 +508,8 @@
 
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      Bind(&DnsProbeBrowserTestIOThreadHelper::SetUpOnIOThread,
-           Unretained(helper_),
-           g_browser_process->io_thread()));
+      BindOnce(&DnsProbeBrowserTestIOThreadHelper::SetUpOnIOThread,
+               Unretained(helper_), g_browser_process->io_thread()));
 
   SetActiveBrowser(browser());
 }
@@ -517,8 +517,9 @@
 void DnsProbeBrowserTest::TearDownOnMainThread() {
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      Bind(&DnsProbeBrowserTestIOThreadHelper::CleanUpOnIOThreadAndDeleteHelper,
-           Unretained(helper_)));
+      BindOnce(
+          &DnsProbeBrowserTestIOThreadHelper::CleanUpOnIOThreadAndDeleteHelper,
+          Unretained(helper_)));
 
   NetErrorTabHelper::set_state_for_testing(
       NetErrorTabHelper::TESTING_DEFAULT);
@@ -543,29 +544,27 @@
 
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      Bind(&DnsProbeBrowserTestIOThreadHelper::SetCorrectionServiceNetError,
-           Unretained(helper_),
-           net_error));
+      BindOnce(&DnsProbeBrowserTestIOThreadHelper::SetCorrectionServiceNetError,
+               Unretained(helper_), net_error));
 }
 
 void DnsProbeBrowserTest::SetCorrectionServiceDelayRequests(
     bool delay_requests) {
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      Bind(&DnsProbeBrowserTestIOThreadHelper::
-               SetCorrectionServiceDelayRequests,
-           Unretained(helper_),
-           delay_requests));
+      BindOnce(
+          &DnsProbeBrowserTestIOThreadHelper::SetCorrectionServiceDelayRequests,
+          Unretained(helper_), delay_requests));
 }
 
 void DnsProbeBrowserTest::WaitForDelayedRequestDestruction() {
   base::RunLoop run_loop;
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      Bind(&DnsProbeBrowserTestIOThreadHelper::SetRequestDestructionCallback,
-           Unretained(helper_),
-           base::Bind(&RunClosureOnUIThread,
-                      run_loop.QuitClosure())));
+      BindOnce(
+          &DnsProbeBrowserTestIOThreadHelper::SetRequestDestructionCallback,
+          Unretained(helper_),
+          base::Bind(&RunClosureOnUIThread, run_loop.QuitClosure())));
   run_loop.Run();
 }
 
@@ -588,19 +587,16 @@
     MockDnsClientRule::ResultType public_result) {
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      Bind(&DnsProbeBrowserTestIOThreadHelper::SetMockDnsClientRules,
-           Unretained(helper_),
-           system_result,
-           public_result));
+      BindOnce(&DnsProbeBrowserTestIOThreadHelper::SetMockDnsClientRules,
+               Unretained(helper_), system_result, public_result));
 }
 
 void DnsProbeBrowserTest::StartDelayedProbes(
     int expected_delayed_probe_count) {
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      Bind(&DnsProbeBrowserTestIOThreadHelper::StartDelayedProbes,
-           Unretained(helper_),
-           expected_delayed_probe_count));
+      BindOnce(&DnsProbeBrowserTestIOThreadHelper::StartDelayedProbes,
+               Unretained(helper_), expected_delayed_probe_count));
 }
 
 DnsProbeStatus DnsProbeBrowserTest::WaitForSentStatus() {
diff --git a/chrome/browser/net/dns_probe_runner.cc b/chrome/browser/net/dns_probe_runner.cc
index edc6797..0029b3a 100644
--- a/chrome/browser/net/dns_probe_runner.cc
+++ b/chrome/browser/net/dns_probe_runner.cc
@@ -97,11 +97,9 @@
     // If the DnsTransactionFactory is NULL, then the DnsConfig is invalid, so
     // the runner can't run a transaction.  Return UNKNOWN asynchronously.
     result_ = UNKNOWN;
-    BrowserThread::PostTask(
-        BrowserThread::IO,
-        FROM_HERE,
-        base::Bind(&DnsProbeRunner::CallCallback,
-                   weak_factory_.GetWeakPtr()));
+    BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+                            base::BindOnce(&DnsProbeRunner::CallCallback,
+                                           weak_factory_.GetWeakPtr()));
     return;
   }
 
@@ -129,11 +127,9 @@
   result_ = EvaluateResponse(net_error, response);
   transaction_.reset();
 
-  BrowserThread::PostTask(
-      BrowserThread::IO,
-      FROM_HERE,
-      base::Bind(&DnsProbeRunner::CallCallback,
-                 weak_factory_.GetWeakPtr()));
+  BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+                          base::BindOnce(&DnsProbeRunner::CallCallback,
+                                         weak_factory_.GetWeakPtr()));
 }
 
 void DnsProbeRunner::CallCallback() {
diff --git a/chrome/browser/net/errorpage_browsertest.cc b/chrome/browser/net/errorpage_browsertest.cc
index c05198a..7b7b299 100644
--- a/chrome/browser/net/errorpage_browsertest.cc
+++ b/chrome/browser/net/errorpage_browsertest.cc
@@ -241,8 +241,8 @@
 
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
-        base::Bind(&LinkDoctorInterceptor::RequestCreated,
-                   weak_factory_.GetWeakPtr()));
+        base::BindOnce(&LinkDoctorInterceptor::RequestCreated,
+                       weak_factory_.GetWeakPtr()));
 
     base::FilePath root_http;
     PathService::Get(chrome::DIR_TEST_DATA, &root_http);
@@ -449,9 +449,9 @@
     UIThreadSearchTermsData search_terms_data(browser()->profile());
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&InstallMockInterceptors,
-                   GURL(search_terms_data.GoogleBaseURLValue()),
-                   base::Passed(&owned_interceptor)));
+        base::BindOnce(&InstallMockInterceptors,
+                       GURL(search_terms_data.GoogleBaseURLValue()),
+                       base::Passed(&owned_interceptor)));
   }
 
   // Returns a GURL that results in a DNS error.
@@ -979,9 +979,9 @@
       browser()->profile()->GetRequestContext();
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&InterceptNetworkTransactions,
-                 base::RetainedRef(url_request_context_getter),
-                 net::ERR_FAILED));
+      base::BindOnce(&InterceptNetworkTransactions,
+                     base::RetainedRef(url_request_context_getter),
+                     net::ERR_FAILED));
 
   // With no navigation corrections to load, there's only one navigation.
   ui_test_utils::NavigateToURL(browser(), test_url);
@@ -1061,10 +1061,9 @@
     // Ownership of the interceptor is passed to an object the IO thread, but a
     // pointer is kept in the test fixture.  As soon as anything calls
     // URLRequestFilter::ClearHandlers(), |interceptor_| can become invalid.
-    BrowserThread::PostTask(
-        BrowserThread::IO, FROM_HERE,
-        base::Bind(&AddInterceptorForURL, url,
-                   base::Passed(&owned_interceptor)));
+    BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+                            base::BindOnce(&AddInterceptorForURL, url,
+                                           base::Passed(&owned_interceptor)));
   }
 
   void NavigateToURLAndWaitForTitle(const GURL& url,
@@ -1196,13 +1195,13 @@
   void SetUpOnMainThread() override {
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&ErrorPageNavigationCorrectionsFailTest::AddFilters));
+        base::BindOnce(&ErrorPageNavigationCorrectionsFailTest::AddFilters));
   }
 
   void TearDownOnMainThread() override {
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&ErrorPageNavigationCorrectionsFailTest::RemoveFilters));
+        base::BindOnce(&ErrorPageNavigationCorrectionsFailTest::RemoveFilters));
   }
 
  private:
@@ -1261,9 +1260,9 @@
       browser()->profile()->GetRequestContext();
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&InterceptNetworkTransactions,
-                 base::RetainedRef(url_request_context_getter),
-                 net::ERR_CONNECTION_FAILED));
+      base::BindOnce(&InterceptNetworkTransactions,
+                     base::RetainedRef(url_request_context_getter),
+                     net::ERR_CONNECTION_FAILED));
 
   ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(
       browser(), test_url, 2);
@@ -1456,15 +1455,14 @@
     // Clear AcceptLanguages to force punycode decoding.
     browser()->profile()->GetPrefs()->SetString(prefs::kAcceptLanguages,
                                                 std::string());
-    BrowserThread::PostTask(
-        BrowserThread::IO, FROM_HERE,
-        base::Bind(&ErrorPageForIDNTest::AddFilters));
+    BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+                            base::BindOnce(&ErrorPageForIDNTest::AddFilters));
   }
 
   void TearDownOnMainThread() override {
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&ErrorPageForIDNTest::RemoveFilters));
+        base::BindOnce(&ErrorPageForIDNTest::RemoveFilters));
   }
 
  private:
diff --git a/chrome/browser/net/load_timing_browsertest.cc b/chrome/browser/net/load_timing_browsertest.cc
index 7d86353..e6f53d9c 100644
--- a/chrome/browser/net/load_timing_browsertest.cc
+++ b/chrome/browser/net/load_timing_browsertest.cc
@@ -142,8 +142,9 @@
     }
 
     base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-        FROM_HERE, base::Bind(&MockUrlRequestJobWithTiming::DelayedStart,
-                              weak_factory_.GetWeakPtr()),
+        FROM_HERE,
+        base::BindOnce(&MockUrlRequestJobWithTiming::DelayedStart,
+                       weak_factory_.GetWeakPtr()),
         time_to_wait);
   }
 
@@ -293,16 +294,16 @@
     TestInterceptor* test_interceptor =
         new TestInterceptor(path, load_timing_deltas);
     BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
-                            base::Bind(&TestInterceptor::Register,
-                                       base::Unretained(test_interceptor)));
+                            base::BindOnce(&TestInterceptor::Register,
+                                           base::Unretained(test_interceptor)));
 
     // Navigate to the page.
     RunTestWithUrl(GURL(kTestUrl), navigation_deltas);
 
     // Once navigation is complete, unregister the protocol handler.
     BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
-                            base::Bind(&TestInterceptor::Unregister,
-                                        base::Unretained(test_interceptor)));
+                            base::BindOnce(&TestInterceptor::Unregister,
+                                           base::Unretained(test_interceptor)));
   }
 
  private:
diff --git a/chrome/browser/net/net_error_tab_helper.cc b/chrome/browser/net/net_error_tab_helper.cc
index a7f9587..a1818e59 100644
--- a/chrome/browser/net/net_error_tab_helper.cc
+++ b/chrome/browser/net/net_error_tab_helper.cc
@@ -52,10 +52,8 @@
     DnsProbeStatus result) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  BrowserThread::PostTask(
-      BrowserThread::UI,
-      FROM_HERE,
-      base::Bind(callback, result));
+  BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+                          base::BindOnce(callback, result));
 }
 
 // Can only access g_browser_process->io_thread() from the browser thread,
@@ -193,12 +191,11 @@
   DVLOG(1) << "Starting DNS probe.";
 
   BrowserThread::PostTask(
-      BrowserThread::IO,
-      FROM_HERE,
-      base::Bind(&StartDnsProbeOnIOThread,
-                 base::Bind(&NetErrorTabHelper::OnDnsProbeFinished,
-                            weak_factory_.GetWeakPtr()),
-                 g_browser_process->io_thread()));
+      BrowserThread::IO, FROM_HERE,
+      base::BindOnce(&StartDnsProbeOnIOThread,
+                     base::Bind(&NetErrorTabHelper::OnDnsProbeFinished,
+                                weak_factory_.GetWeakPtr()),
+                     g_browser_process->io_thread()));
 }
 
 void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeStatus result) {
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc
index 1ea9d129..e06d4a9 100644
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc
@@ -117,7 +117,7 @@
     DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
     content::BrowserThread::PostTask(
         content::BrowserThread::UI, FROM_HERE,
-        base::Bind(
+        base::BindOnce(
             &UINetworkQualityEstimatorService::EffectiveConnectionTypeChanged,
             service_, type));
   }
@@ -131,9 +131,9 @@
     DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
     content::BrowserThread::PostTask(
         content::BrowserThread::UI, FROM_HERE,
-        base::Bind(&UINetworkQualityEstimatorService::RTTOrThroughputComputed,
-                   service_, http_rtt, transport_rtt,
-                   downstream_throughput_kbps));
+        base::BindOnce(
+            &UINetworkQualityEstimatorService::RTTOrThroughputComputed,
+            service_, http_rtt, transport_rtt, downstream_throughput_kbps));
   }
 
  private:
@@ -164,13 +164,13 @@
 
   content::BrowserThread::PostTask(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(&IONetworkQualityObserver::InitializeOnIOThread,
-                 base::Unretained(io_observer_.get()),
-                 g_browser_process->io_thread()));
+      base::BindOnce(&IONetworkQualityObserver::InitializeOnIOThread,
+                     base::Unretained(io_observer_.get()),
+                     g_browser_process->io_thread()));
   content::BrowserThread::PostTask(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(&SetNQEOnIOThread, prefs_manager_.get(),
-                 g_browser_process->io_thread()));
+      base::BindOnce(&SetNQEOnIOThread, prefs_manager_.get(),
+                     g_browser_process->io_thread()));
 }
 
 UINetworkQualityEstimatorService::~UINetworkQualityEstimatorService() {
@@ -229,9 +229,9 @@
   // be completely set up for receiving the callbacks.
   content::BrowserThread::PostTask(
       content::BrowserThread::UI, FROM_HERE,
-      base::Bind(&UINetworkQualityEstimatorService::
-                     NotifyEffectiveConnectionTypeObserverIfPresent,
-                 weak_factory_.GetWeakPtr(), observer));
+      base::BindOnce(&UINetworkQualityEstimatorService::
+                         NotifyEffectiveConnectionTypeObserverIfPresent,
+                     weak_factory_.GetWeakPtr(), observer));
 }
 
 void UINetworkQualityEstimatorService::RemoveEffectiveConnectionTypeObserver(
@@ -276,9 +276,9 @@
   // be completely set up for receiving the callbacks.
   content::BrowserThread::PostTask(
       content::BrowserThread::UI, FROM_HERE,
-      base::Bind(&UINetworkQualityEstimatorService::
-                     NotifyRTTAndThroughputObserverIfPresent,
-                 weak_factory_.GetWeakPtr(), observer));
+      base::BindOnce(&UINetworkQualityEstimatorService::
+                         NotifyRTTAndThroughputObserverIfPresent,
+                     weak_factory_.GetWeakPtr(), observer));
 }
 
 // Removes |observer| from the list of RTT and throughput estimate observers.
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc
index d1eac6a..24e9c53 100644
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc
@@ -47,8 +47,8 @@
   base::RunLoop run_loop;
   content::BrowserThread::PostTaskAndReply(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(&OverrideEffectiveConnectionTypeOnIO, type,
-                 g_browser_process->io_thread()),
+      base::BindOnce(&OverrideEffectiveConnectionTypeOnIO, type,
+                     g_browser_process->io_thread()),
       run_loop.QuitClosure());
   run_loop.Run();
 }
@@ -60,7 +60,8 @@
   base::RunLoop run_loop;
   content::BrowserThread::PostTaskAndReply(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(&OverrideRTTsAndWaitOnIO, rtt, g_browser_process->io_thread()),
+      base::BindOnce(&OverrideRTTsAndWaitOnIO, rtt,
+                     g_browser_process->io_thread()),
       run_loop.QuitClosure());
   run_loop.Run();
 }
diff --git a/chrome/browser/net/nss_context.cc b/chrome/browser/net/nss_context.cc
index 846d0ce3..4b1fa526 100644
--- a/chrome/browser/net/nss_context.cc
+++ b/chrome/browser/net/nss_context.cc
@@ -22,7 +22,7 @@
     net::NSSCertDatabase* cert_db) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
-  response_task_runner->PostTask(FROM_HERE, base::Bind(callback, cert_db));
+  response_task_runner->PostTask(FROM_HERE, base::BindOnce(callback, cert_db));
 }
 
 // Gets NSSCertDatabase for the resource context.
@@ -49,11 +49,9 @@
     const base::Callback<void(net::NSSCertDatabase*)>& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  BrowserThread::PostTask(BrowserThread::IO,
-                          FROM_HERE,
-                          base::Bind(&GetCertDBOnIOThread,
-                                     profile->GetResourceContext(),
-                                     base::ThreadTaskRunnerHandle::Get(),
-                                     callback));
+  BrowserThread::PostTask(
+      BrowserThread::IO, FROM_HERE,
+      base::BindOnce(&GetCertDBOnIOThread, profile->GetResourceContext(),
+                     base::ThreadTaskRunnerHandle::Get(), callback));
 }
 
diff --git a/chrome/browser/net/predictor.cc b/chrome/browser/net/predictor.cc
index 04a7ec4..2bb7698 100644
--- a/chrome/browser/net/predictor.cc
+++ b/chrome/browser/net/predictor.cc
@@ -161,10 +161,10 @@
 
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&Predictor::FinalizeInitializationOnIOThread,
-                 base::Unretained(this), urls,
-                 base::Passed(std::move(referral_list)), io_thread,
-                 profile_io_data));
+      base::BindOnce(&Predictor::FinalizeInitializationOnIOThread,
+                     base::Unretained(this), urls,
+                     base::Passed(std::move(referral_list)), io_thread,
+                     profile_io_data));
 }
 
 void Predictor::AnticipateOmniboxUrl(const GURL& url, bool preconnectable) {
@@ -234,8 +234,8 @@
 
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&Predictor::Resolve, base::Unretained(this),
-                 CanonicalizeUrl(url), motivation));
+      base::BindOnce(&Predictor::Resolve, base::Unretained(this),
+                     CanonicalizeUrl(url), motivation));
 }
 
 void Predictor::PreconnectUrlAndSubresources(const GURL& url,
@@ -317,7 +317,7 @@
   // into the profile, but doing so would crash before this point anyways.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&Predictor::DiscardAllResults, base::Unretained(this)));
+      base::BindOnce(&Predictor::DiscardAllResults, base::Unretained(this)));
   ClearPrefsOnUIThread();
 }
 
@@ -341,9 +341,8 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   ui_weak_factory_->InvalidateWeakPtrs();
   BrowserThread::PostTask(
-      BrowserThread::IO,
-      FROM_HERE,
-      base::Bind(&Predictor::Shutdown, base::Unretained(this)));
+      BrowserThread::IO, FROM_HERE,
+      base::BindOnce(&Predictor::Shutdown, base::Unretained(this)));
 }
 
 // ---------------------- End UI methods. -------------------------------------
@@ -665,10 +664,9 @@
     ResolveList(urls, motivation);
   } else {
     BrowserThread::PostTask(
-        BrowserThread::IO,
-        FROM_HERE,
-        base::Bind(&Predictor::ResolveList, base::Unretained(this),
-                   urls, motivation));
+        BrowserThread::IO, FROM_HERE,
+        base::BindOnce(&Predictor::ResolveList, base::Unretained(this), urls,
+                       motivation));
   }
 }
 
@@ -695,12 +693,12 @@
   // ShutdownOnUIThread, because the caller has a valid profile.
   BrowserThread::PostTaskAndReply(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&Predictor::WriteDnsPrefetchState, base::Unretained(this),
-                 startup_list_raw, referral_list_raw),
-      base::Bind(&Predictor::UpdatePrefsOnUIThread,
-                 ui_weak_factory_->GetWeakPtr(),
-                 base::Passed(std::move(startup_list)),
-                 base::Passed(std::move(referral_list))));
+      base::BindOnce(&Predictor::WriteDnsPrefetchState, base::Unretained(this),
+                     startup_list_raw, referral_list_raw),
+      base::BindOnce(&Predictor::UpdatePrefsOnUIThread,
+                     ui_weak_factory_->GetWeakPtr(),
+                     base::Passed(std::move(startup_list)),
+                     base::Passed(std::move(referral_list))));
 }
 
 void Predictor::UpdatePrefsOnUIThread(
@@ -734,9 +732,9 @@
   } else {
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&Predictor::PreconnectUrlOnIOThread, base::Unretained(this),
-                   url, first_party_for_cookies, motivation, allow_credentials,
-                   count));
+        base::BindOnce(&Predictor::PreconnectUrlOnIOThread,
+                       base::Unretained(this), url, first_party_for_cookies,
+                       motivation, allow_credentials, count));
   }
 }
 
@@ -803,10 +801,9 @@
     PrepareFrameSubresources(url, first_party_for_cookies);
   } else {
     BrowserThread::PostTask(
-        BrowserThread::IO,
-        FROM_HERE,
-        base::Bind(&Predictor::PrepareFrameSubresources,
-                   base::Unretained(this), url, first_party_for_cookies));
+        BrowserThread::IO, FROM_HERE,
+        base::BindOnce(&Predictor::PrepareFrameSubresources,
+                       base::Unretained(this), url, first_party_for_cookies));
   }
 }
 
diff --git a/chrome/browser/net/predictor_browsertest.cc b/chrome/browser/net/predictor_browsertest.cc
index abd1dcd..de34b2e 100644
--- a/chrome/browser/net/predictor_browsertest.cc
+++ b/chrome/browser/net/predictor_browsertest.cc
@@ -567,7 +567,7 @@
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     content::BrowserThread::PostTask(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(
+        base::BindOnce(
             &PredictorBrowserTest::StartInterceptingHostWithCreateJobCallback,
             cross_site_test_server()->base_url(),
             base::Bind(&CreateEmptyBodyRequestJob)));
@@ -577,8 +577,8 @@
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     content::BrowserThread::PostTask(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&PredictorBrowserTest::StopInterceptingHost,
-                   cross_site_test_server()->base_url()));
+        base::BindOnce(&PredictorBrowserTest::StopInterceptingHost,
+                       cross_site_test_server()->base_url()));
   }
 
   void TearDownOnMainThread() override {
@@ -602,17 +602,18 @@
   }
 
   void LearnAboutInitialNavigation(const GURL& url) {
-    BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
-                            base::Bind(&Predictor::LearnAboutInitialNavigation,
-                                       base::Unretained(predictor()), url));
+    BrowserThread::PostTask(
+        BrowserThread::IO, FROM_HERE,
+        base::BindOnce(&Predictor::LearnAboutInitialNavigation,
+                       base::Unretained(predictor()), url));
     content::RunAllPendingInMessageLoop(BrowserThread::IO);
   }
 
   void LearnFromNavigation(const GURL& referring_url, const GURL& target_url) {
-    BrowserThread::PostTask(
-        BrowserThread::IO, FROM_HERE,
-        base::Bind(&Predictor::LearnFromNavigation,
-                   base::Unretained(predictor()), referring_url, target_url));
+    BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+                            base::BindOnce(&Predictor::LearnFromNavigation,
+                                           base::Unretained(predictor()),
+                                           referring_url, target_url));
     content::RunAllPendingInMessageLoop(BrowserThread::IO);
   }
 
@@ -637,8 +638,8 @@
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&PredictorBrowserTest::FloodResolveRequests,
-                   base::Unretained(this), names));
+        base::BindOnce(&PredictorBrowserTest::FloodResolveRequests,
+                       base::Unretained(this), names));
   }
 
   void FloodResolveRequests(const std::vector<GURL>& names) {
@@ -663,8 +664,9 @@
     base::RunLoop run_loop;
     BrowserThread::PostTaskAndReply(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&PredictorBrowserTest::InstallPredictorObserverOnIOThread,
-                   base::Unretained(this), base::Unretained(predictor())),
+        base::BindOnce(
+            &PredictorBrowserTest::InstallPredictorObserverOnIOThread,
+            base::Unretained(this), base::Unretained(predictor())),
         run_loop.QuitClosure());
     run_loop.Run();
   }
@@ -692,8 +694,8 @@
     base::RunLoop run_loop;
     BrowserThread::PostTaskAndReply(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&PredictorBrowserTest::FlushClientSockets,
-                   base::Unretained(this)),
+        base::BindOnce(&PredictorBrowserTest::FlushClientSockets,
+                       base::Unretained(this)),
         run_loop.QuitClosure());
     run_loop.Run();
   }
@@ -724,8 +726,8 @@
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&PredictorBrowserTest::ExpectUrlRequestedFromPredictor,
-                   base::Unretained(this), url));
+        base::BindOnce(&PredictorBrowserTest::ExpectUrlRequestedFromPredictor,
+                       base::Unretained(this), url));
   }
 
   void ExpectUrlRequestedFromPredictor(const GURL& url) {
@@ -734,15 +736,15 @@
 
   void DiscardAllResultsOnUIThread() {
     BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
-                            base::Bind(&Predictor::DiscardAllResults,
-                                       base::Unretained(predictor())));
+                            base::BindOnce(&Predictor::DiscardAllResults,
+                                           base::Unretained(predictor())));
   }
 
   void ExpectValidPeakPendingLookupsOnUI(size_t num_names_requested) {
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        base::Bind(&PredictorBrowserTest::ExpectValidPeakPendingLookups,
-                   base::Unretained(this), num_names_requested));
+        base::BindOnce(&PredictorBrowserTest::ExpectValidPeakPendingLookups,
+                       base::Unretained(this), num_names_requested));
   }
 
   void ExpectValidPeakPendingLookups(size_t num_names_requested) {
@@ -970,7 +972,7 @@
   // embedded_test_server_.
   content::BrowserThread::PostTask(
       content::BrowserThread::IO, FROM_HERE,
-      base::Bind(
+      base::BindOnce(
           &PredictorBrowserTest::StartInterceptingHostWithCreateJobCallback,
           redirector_url,
           base::Bind(
@@ -1439,7 +1441,7 @@
   base::RunLoop run_loop;
   BrowserThread::PostTaskAndReply(
       BrowserThread::IO, FROM_HERE,
-      base::Bind(&Predictor::PredictorGetHtmlInfo, predictor(), &html),
+      base::BindOnce(&Predictor::PredictorGetHtmlInfo, predictor(), &html),
       run_loop.QuitClosure());
   run_loop.Run();
 
diff --git a/chrome/browser/net/resource_prefetch_predictor_observer.cc b/chrome/browser/net/resource_prefetch_predictor_observer.cc
index b8925160a..4dc2b0b 100644
--- a/chrome/browser/net/resource_prefetch_predictor_observer.cc
+++ b/chrome/browser/net/resource_prefetch_predictor_observer.cc
@@ -109,10 +109,11 @@
 
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
-      base::Bind(&ResourcePrefetchPredictorObserver::OnRequestStartedOnUIThread,
-                 base::Unretained(this), base::Passed(std::move(summary)),
-                 web_contents_getter, request->first_party_for_cookies(),
-                 request->creation_time()));
+      base::BindOnce(
+          &ResourcePrefetchPredictorObserver::OnRequestStartedOnUIThread,
+          base::Unretained(this), base::Passed(std::move(summary)),
+          web_contents_getter, request->first_party_for_cookies(),
+          request->creation_time()));
 
   if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME)
     ReportMainFrameRequestStats(MAIN_FRAME_REQUEST_STATS_PROCESSED_REQUESTS);
@@ -144,7 +145,7 @@
 
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
-      base::Bind(
+      base::BindOnce(
           &ResourcePrefetchPredictorObserver::OnRequestRedirectedOnUIThread,
           base::Unretained(this), base::Passed(std::move(summary)),
           web_contents_getter, request->first_party_for_cookies(),
@@ -181,7 +182,7 @@
 
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
-      base::Bind(
+      base::BindOnce(
           &ResourcePrefetchPredictorObserver::OnResponseStartedOnUIThread,
           base::Unretained(this), base::Passed(std::move(summary)),
           web_contents_getter, request->first_party_for_cookies(),
diff --git a/chrome/browser/net/sdch_browsertest.cc b/chrome/browser/net/sdch_browsertest.cc
index df83116..016ff00a3 100644
--- a/chrome/browser/net/sdch_browsertest.cc
+++ b/chrome/browser/net/sdch_browsertest.cc
@@ -392,12 +392,11 @@
     int fetches = -1;
     base::RunLoop run_loop;
     content::BrowserThread::PostTaskAndReply(
-        content::BrowserThread::IO,
-        FROM_HERE,
-        base::Bind(&SdchBrowserTest::GetNumberOfDictionaryFetchesOnIOThread,
-                   base::Unretained(this),
-                   base::Unretained(profile->GetRequestContext()),
-                   &fetches),
+        content::BrowserThread::IO, FROM_HERE,
+        base::BindOnce(&SdchBrowserTest::GetNumberOfDictionaryFetchesOnIOThread,
+                       base::Unretained(this),
+                       base::Unretained(profile->GetRequestContext()),
+                       &fetches),
         run_loop.QuitClosure());
     run_loop.Run();
     DCHECK_NE(-1, fetches);
@@ -424,8 +423,8 @@
     base::RunLoop run_loop;
     content::BrowserThread::PostTaskAndReply(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&SdchBrowserTest::NukeSdchDictionariesOnIOThread,
-                   base::RetainedRef(url_request_context_getter_)),
+        base::BindOnce(&SdchBrowserTest::NukeSdchDictionariesOnIOThread,
+                       base::RetainedRef(url_request_context_getter_)),
         run_loop.QuitClosure());
     run_loop.Run();
   }
@@ -457,7 +456,7 @@
     base::RunLoop run_loop;
     content::BrowserThread::PostTaskAndReply(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(
+        base::BindOnce(
             &SdchBrowserTest::SubscribeToSdchNotifications,
             base::Unretained(this),
             base::RetainedRef(second_browser_->profile()->GetRequestContext()),
@@ -479,11 +478,11 @@
     base::RunLoop run_loop;
     content::BrowserThread::PostTaskAndReply(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&SdchBrowserTest::SubscribeToSdchNotifications,
-                   base::Unretained(this),
-                   base::RetainedRef(
-                       incognito_browser_->profile()->GetRequestContext()),
-                   &sdch_enabled),
+        base::BindOnce(&SdchBrowserTest::SubscribeToSdchNotifications,
+                       base::Unretained(this),
+                       base::RetainedRef(
+                           incognito_browser_->profile()->GetRequestContext()),
+                       &sdch_enabled),
         run_loop.QuitClosure());
     run_loop.Run();
     DCHECK(sdch_enabled);
@@ -500,11 +499,9 @@
     base::RunLoop run_loop;
     content::BrowserThread::PostTask(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&SdchResponseHandler::WaitAndGetRequestVector,
-                   base::Unretained(&response_handler_),
-                   num_requests,
-                   run_loop.QuitClosure(),
-                   result));
+        base::BindOnce(&SdchResponseHandler::WaitAndGetRequestVector,
+                       base::Unretained(&response_handler_), num_requests,
+                       run_loop.QuitClosure(), result));
     run_loop.Run();
   }
 
@@ -514,9 +511,9 @@
     base::RunLoop run_loop;
     content::BrowserThread::PostTaskAndReply(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&SdchResponseHandler::set_cache_sdch_response,
-                   base::Unretained(&response_handler_),
-                   cache_sdch_response),
+        base::BindOnce(&SdchResponseHandler::set_cache_sdch_response,
+                       base::Unretained(&response_handler_),
+                       cache_sdch_response),
         run_loop.QuitClosure());
     run_loop.Run();
   }
@@ -628,10 +625,10 @@
     base::RunLoop run_loop;
     content::BrowserThread::PostTaskAndReply(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&SdchBrowserTest::SubscribeToSdchNotifications,
-                   base::Unretained(this),
-                   base::RetainedRef(url_request_context_getter_),
-                   &sdch_enabled_),
+        base::BindOnce(&SdchBrowserTest::SubscribeToSdchNotifications,
+                       base::Unretained(this),
+                       base::RetainedRef(url_request_context_getter_),
+                       &sdch_enabled_),
         run_loop.QuitClosure());
     run_loop.Run();
   }
@@ -640,10 +637,9 @@
     CHECK(test_server_.ShutdownAndWaitUntilComplete());
 
     content::BrowserThread::PostTask(
-        content::BrowserThread::IO,
-        FROM_HERE,
-        base::Bind(&SdchBrowserTest::UnsubscribeFromAllSdchNotifications,
-                   base::Unretained(this)));
+        content::BrowserThread::IO, FROM_HERE,
+        base::BindOnce(&SdchBrowserTest::UnsubscribeFromAllSdchNotifications,
+                       base::Unretained(this)));
   }
 
   // Check if SDCH is enabled, and if so subscribe an observer to the
diff --git a/chrome/browser/net/spdyproxy/chrome_data_use_group.cc b/chrome/browser/net/spdyproxy/chrome_data_use_group.cc
index 72fac969..40c69bde 100644
--- a/chrome/browser/net/spdyproxy/chrome_data_use_group.cc
+++ b/chrome/browser/net/spdyproxy/chrome_data_use_group.cc
@@ -47,7 +47,7 @@
 
   content::BrowserThread::PostTask(
       content::BrowserThread::UI, FROM_HERE,
-      base::Bind(&ChromeDataUseGroup::InitializeOnUIThread, this));
+      base::BindOnce(&ChromeDataUseGroup::InitializeOnUIThread, this));
 }
 
 void ChromeDataUseGroup::InitializeOnUIThread() {
diff --git a/chrome/browser/net/spdyproxy/chrome_data_use_group_browsertest.cc b/chrome/browser/net/spdyproxy/chrome_data_use_group_browsertest.cc
index ac14959..649fea9 100644
--- a/chrome/browser/net/spdyproxy/chrome_data_use_group_browsertest.cc
+++ b/chrome/browser/net/spdyproxy/chrome_data_use_group_browsertest.cc
@@ -57,16 +57,16 @@
 
     content::BrowserThread::PostTask(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&ChromeDataUseGroupBrowserTest::SetUpOnIOThread,
-             base::Unretained(this)));
+        base::BindOnce(&ChromeDataUseGroupBrowserTest::SetUpOnIOThread,
+                       base::Unretained(this)));
     RunAllPendingInMessageLoop(content::BrowserThread::IO);
   }
 
   void TearDownOnMainThread() override {
     content::BrowserThread::PostTask(
         content::BrowserThread::IO, FROM_HERE,
-        base::Bind(&ChromeDataUseGroupBrowserTest::TearDownOnIOThread,
-             base::Unretained(this)));
+        base::BindOnce(&ChromeDataUseGroupBrowserTest::TearDownOnIOThread,
+                       base::Unretained(this)));
     RunAllPendingInMessageLoop(content::BrowserThread::IO);
   }
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index f68037c..005ade58 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -3870,12 +3870,10 @@
   // Do not use |this| or |frame|! ContentClient might have deleted them by now!
 }
 
-void RenderFrameImpl::DidReceiveTitle(blink::WebLocalFrame* frame,
-                                      const blink::WebString& title,
+void RenderFrameImpl::DidReceiveTitle(const blink::WebString& title,
                                       blink::WebTextDirection direction) {
-  DCHECK_EQ(frame_, frame);
   // Ignore all but top level navigations.
-  if (!frame->Parent()) {
+  if (!frame_->Parent()) {
     base::trace_event::TraceLog::GetInstance()->UpdateProcessLabel(
         routing_id_, title.Utf8());
 
@@ -3886,7 +3884,7 @@
   }
 
   // Also check whether we have new encoding name.
-  UpdateEncoding(frame, frame->View()->PageEncoding().Utf8());
+  UpdateEncoding(frame_, frame_->View()->PageEncoding().Utf8());
 }
 
 void RenderFrameImpl::DidChangeIcon(blink::WebIconURL::Type icon_type) {
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 2cd3358..931da37 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -572,8 +572,7 @@
   void DidCreateDocumentElement(blink::WebLocalFrame* frame) override;
   void RunScriptsAtDocumentElementAvailable(
       blink::WebLocalFrame* frame) override;
-  void DidReceiveTitle(blink::WebLocalFrame* frame,
-                       const blink::WebString& title,
+  void DidReceiveTitle(const blink::WebString& title,
                        blink::WebTextDirection direction) override;
   void DidChangeIcon(blink::WebIconURL::Type icon_type) override;
   void DidFinishDocumentLoad(blink::WebLocalFrame* frame) override;
diff --git a/content/shell/test_runner/web_frame_test_client.cc b/content/shell/test_runner/web_frame_test_client.cc
index 9a524f5..92325993 100644
--- a/content/shell/test_runner/web_frame_test_client.cc
+++ b/content/shell/test_runner/web_frame_test_client.cc
@@ -463,11 +463,10 @@
   }
 }
 
-void WebFrameTestClient::DidReceiveTitle(blink::WebLocalFrame* frame,
-                                         const blink::WebString& title,
+void WebFrameTestClient::DidReceiveTitle(const blink::WebString& title,
                                          blink::WebTextDirection direction) {
   if (test_runner()->shouldDumpFrameLoadCallbacks()) {
-    PrintFrameDescription(delegate_, frame);
+    PrintFrameDescription(delegate_, web_frame_test_proxy_base_->web_frame());
     delegate_->PrintMessage(std::string(" - didReceiveTitle: ") + title.Utf8() +
                             "\n");
   }
diff --git a/content/shell/test_runner/web_frame_test_client.h b/content/shell/test_runner/web_frame_test_client.h
index be5c65f..e69ea01 100644
--- a/content/shell/test_runner/web_frame_test_client.h
+++ b/content/shell/test_runner/web_frame_test_client.h
@@ -69,8 +69,7 @@
   void DidCommitProvisionalLoad(
       const blink::WebHistoryItem& history_item,
       blink::WebHistoryCommitType history_type) override;
-  void DidReceiveTitle(blink::WebLocalFrame* frame,
-                       const blink::WebString& title,
+  void DidReceiveTitle(const blink::WebString& title,
                        blink::WebTextDirection direction) override;
   void DidChangeIcon(blink::WebIconURL::Type icon_type) override;
   void DidFinishDocumentLoad(blink::WebLocalFrame* frame) override;
diff --git a/content/shell/test_runner/web_frame_test_proxy.h b/content/shell/test_runner/web_frame_test_proxy.h
index a70c9582..13d7e8e 100644
--- a/content/shell/test_runner/web_frame_test_proxy.h
+++ b/content/shell/test_runner/web_frame_test_proxy.h
@@ -125,11 +125,10 @@
     Base::DidCommitProvisionalLoad(item, commit_type);
   }
 
-  void DidReceiveTitle(blink::WebLocalFrame* frame,
-                       const blink::WebString& title,
+  void DidReceiveTitle(const blink::WebString& title,
                        blink::WebTextDirection direction) override {
-    test_client()->DidReceiveTitle(frame, title, direction);
-    Base::DidReceiveTitle(frame, title, direction);
+    test_client()->DidReceiveTitle(title, direction);
+    Base::DidReceiveTitle(title, direction);
   }
 
   void DidChangeIcon(blink::WebIconURL::Type icon_type) override {
diff --git a/ios/chrome/browser/tabs/tab.h b/ios/chrome/browser/tabs/tab.h
index bd4b5aa..43091fc 100644
--- a/ios/chrome/browser/tabs/tab.h
+++ b/ios/chrome/browser/tabs/tab.h
@@ -227,10 +227,6 @@
 - (void)goBack;
 - (void)goForward;
 
-// Records the state (scroll position, form values, whatever can be
-// harvested) from the current page into the current session entry.
-- (void)recordStateInHistory;
-
 // Returns the timestamp of the last time the tab is visited.
 - (double)lastVisitedTimestamp;
 
diff --git a/ios/chrome/browser/tabs/tab.mm b/ios/chrome/browser/tabs/tab.mm
index 12d1af709..6bb0c4a 100644
--- a/ios/chrome/browser/tabs/tab.mm
+++ b/ios/chrome/browser/tabs/tab.mm
@@ -1224,14 +1224,6 @@
   [parentTabModel_ notifyTabChanged:self];
 }
 
-// Records the state (scroll position, form values, whatever can be
-// harvested) from the current page into the current session entry.
-- (void)recordStateInHistory {
-  // Link-loading prerender tab may not have correct zoom value during the load.
-  if (!self.isLinkLoadingPrerenderTab)
-    [self.webController recordStateInHistory];
-}
-
 // Records metric for the interface's orientation.
 - (void)recordInterfaceOrientation {
   switch ([[UIApplication sharedApplication] statusBarOrientation]) {
diff --git a/ios/chrome/browser/tabs/tab_model.mm b/ios/chrome/browser/tabs/tab_model.mm
index f3dd565..3e0ed5a7 100644
--- a/ios/chrome/browser/tabs/tab_model.mm
+++ b/ios/chrome/browser/tabs/tab_model.mm
@@ -692,10 +692,6 @@
 #pragma mark - Private methods
 
 - (SessionIOS*)sessionForSaving {
-  // Background tabs will already have their state preserved, but not the
-  // fg tab. Do it now.
-  [self.currentTab recordStateInHistory];
-
   // Build the array of sessions. Copy the session objects as the saving will
   // be done on a separate thread.
   // TODO(crbug.com/661986): This could get expensive especially since this
@@ -727,9 +723,6 @@
   int oldCount = _webStateList->count();
   DCHECK_GE(oldCount, 0);
 
-  if (persistState && self.currentTab)
-    [self.currentTab recordStateInHistory];
-
   web::WebState::CreateParams createParams(_browserState);
   DeserializeWebStateList(
       _webStateList.get(), window,
diff --git a/ios/chrome/browser/tabs/tab_model_selected_tab_observer.mm b/ios/chrome/browser/tabs/tab_model_selected_tab_observer.mm
index 5f19d61..92b51ebd 100644
--- a/ios/chrome/browser/tabs/tab_model_selected_tab_observer.mm
+++ b/ios/chrome/browser/tabs/tab_model_selected_tab_observer.mm
@@ -32,13 +32,10 @@
                 oldWebState:(web::WebState*)oldWebState
                     atIndex:(int)atIndex
                  userAction:(BOOL)userAction {
-  Tab* oldTab = nil;
-  Tab* newTab = nil;
   if (oldWebState) {
     // Save state, such as scroll position, ... of the old selected Tab.
-    oldTab = LegacyTabHelper::GetTabForWebState(oldWebState);
-    if (userAction)
-      [oldTab recordStateInHistory];
+    Tab* oldTab = LegacyTabHelper::GetTabForWebState(oldWebState);
+    DCHECK(oldTab);
 
     // Avoid artificially extending the lifetime of oldTab until the global
     // autoreleasepool is purged.
@@ -51,7 +48,7 @@
   }
 
   if (newWebState) {
-    newTab = LegacyTabHelper::GetTabForWebState(newWebState);
+    Tab* newTab = LegacyTabHelper::GetTabForWebState(newWebState);
     [newTab updateLastVisitedTimestamp];
 
     // Persist the session state.
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm
index 23fc50c..1c37fbc 100644
--- a/ios/chrome/browser/ui/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -1978,7 +1978,6 @@
   [_toolbarController dismissToolsMenuPopup];
   [self hidePageInfoPopupForView:nil];
   [_toolbarController dismissTabHistoryPopup];
-  [[_model currentTab] recordStateInHistory];
 }
 
 #pragma mark - Tap handling
@@ -3716,7 +3715,6 @@
         [newTab navigationManager]->CanPruneAllButLastCommittedItem();
 
     if (oldTab && newTab && canPruneItems) {
-      [oldTab recordStateInHistory];
       [newTab navigationManager]->CopyStateFromAndPrune(
           [oldTab navigationManager]);
       [[newTab nativeAppNavigationController]
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm b/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm
index 502ca99..073ecc9b 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_controller.mm
@@ -340,10 +340,6 @@
 }
 
 - (void)showWithSelectedTabAnimation {
-  // Stores the current tab's scroll position. Helps determine whether the
-  // current tab snapshot should be updated or not.
-  [_onLoadActiveModel.currentTab recordStateInHistory];
-
   [self updateWindowBackgroundColor];
   [self performTabSwitcherTransition:TransitionType::TRANSITION_PRESENT
                            withModel:_onLoadActiveModel
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm
index ddcf989..4001fd8 100644
--- a/ios/web/web_state/ui/crw_web_controller.mm
+++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -2926,6 +2926,7 @@
 - (void)wasHidden {
   if (_isHalted)
     return;
+  [self recordStateInHistory];
   if ([self.nativeController respondsToSelector:@selector(wasHidden)]) {
     [self.nativeController wasHidden];
   }
diff --git a/ios/web/web_state/web_state_impl.mm b/ios/web/web_state/web_state_impl.mm
index e974880..310def22 100644
--- a/ios/web/web_state/web_state_impl.mm
+++ b/ios/web/web_state/web_state_impl.mm
@@ -650,6 +650,7 @@
 }
 
 CRWSessionStorage* WebStateImpl::BuildSessionStorage() {
+  [web_controller_ recordStateInHistory];
   SessionStorageBuilder session_storage_builder;
   return session_storage_builder.BuildStorage(this);
 }
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 2867de9..8bbadac 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1509,8 +1509,6 @@
 crbug.com/636207 [ Win Debug ] fast/dom/HTMLImageElement/image-srcset-w-onerror.html [ Failure Pass ]
 crbug.com/636207 [ Win Debug ] virtual/sharedarraybuffer/fast/dom/HTMLImageElement/image-srcset-w-onerror.html [ Failure Pass ]
 
-crbug.com/v8/6206 fast/js/string-prototype-properties.html [ NeedsManualRebaseline ]
-
 crbug.com/569139 fast/js/string-replace-2.html [ Failure ]
 crbug.com/569139 fast/js/regexp-caching.html [ Failure ]
 crbug.com/597221 fast/dom/Window/window-postmessage-clone-deep-array.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/fast/js/string-prototype-properties-expected.txt b/third_party/WebKit/LayoutTests/fast/js/string-prototype-properties-expected.txt
index ef6d8d4..7ca4db8 100644
--- a/third_party/WebKit/LayoutTests/fast/js/string-prototype-properties-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/js/string-prototype-properties-expected.txt
@@ -3,8 +3,8 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS String.prototype.toString.call(undefined) threw exception TypeError: String.prototype.toString is not generic.
-PASS String.prototype.valueOf.call(undefined) threw exception TypeError: String.prototype.valueOf is not generic.
+PASS String.prototype.toString.call(undefined) threw exception TypeError: String.prototype.toString requires that 'this' be a String.
+PASS String.prototype.valueOf.call(undefined) threw exception TypeError: String.prototype.valueOf requires that 'this' be a String.
 PASS String.prototype.charAt.call(undefined, 0) threw exception TypeError: String.prototype.charAt called on null or undefined.
 PASS String.prototype.charCodeAt.call(undefined, 0) threw exception TypeError: String.prototype.charCodeAt called on null or undefined.
 PASS String.prototype.concat.call(undefined, 'five') threw exception TypeError: String.prototype.concat called on null or undefined.
@@ -24,8 +24,8 @@
 PASS String.prototype.toLocaleLowerCase.call(undefined) threw exception TypeError: String.prototype.toLocaleLowerCase called on null or undefined.
 PASS String.prototype.toLocaleUpperCase.call(undefined) threw exception TypeError: String.prototype.toLocaleUpperCase called on null or undefined.
 PASS String.prototype.trim.call(undefined) threw exception TypeError: String.prototype.trim called on null or undefined.
-PASS String.prototype.toString.call(1224) threw exception TypeError: String.prototype.toString is not generic.
-PASS String.prototype.valueOf.call(1224) threw exception TypeError: String.prototype.valueOf is not generic.
+PASS String.prototype.toString.call(1224) threw exception TypeError: String.prototype.toString requires that 'this' be a String.
+PASS String.prototype.valueOf.call(1224) threw exception TypeError: String.prototype.valueOf requires that 'this' be a String.
 PASS String.prototype.charAt.call(1224, 0) is "1"
 PASS String.prototype.charCodeAt.call(1224, 0) is 0x31
 PASS String.prototype.concat.call(1224, 'five') is "1224five"
diff --git a/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp b/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp
index 2d5533b..698387f6 100644
--- a/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp
+++ b/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp
@@ -378,8 +378,7 @@
 
 void LocalFrameClientImpl::DispatchDidReceiveTitle(const String& title) {
   if (web_frame_->Client()) {
-    web_frame_->Client()->DidReceiveTitle(web_frame_, title,
-                                          kWebTextDirectionLeftToRight);
+    web_frame_->Client()->DidReceiveTitle(title, kWebTextDirectionLeftToRight);
   }
 }
 
diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
index 9855885..7dc90623 100644
--- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
+++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
@@ -8809,13 +8809,11 @@
       remote_frame_->Close();
   }
 
-  void DidReceiveTitle(WebLocalFrame* frame,
-                       const WebString&,
-                       WebTextDirection) override {
-    if (!frame->Parent()) {
+  void DidReceiveTitle(const WebString&, WebTextDirection) override {
+    if (!Frame()->Parent()) {
       remote_frame_ =
           WebRemoteFrame::Create(WebTreeScopeType::kDocument, nullptr);
-      frame->Swap(remote_frame_);
+      Frame()->Swap(remote_frame_);
     }
   }
 
diff --git a/third_party/WebKit/public/web/WebFrameClient.h b/third_party/WebKit/public/web/WebFrameClient.h
index e215729..7e9100da 100644
--- a/third_party/WebKit/public/web/WebFrameClient.h
+++ b/third_party/WebKit/public/web/WebFrameClient.h
@@ -395,8 +395,7 @@
   virtual void RunScriptsAtDocumentElementAvailable(WebLocalFrame*) {}
 
   // The page title is available.
-  virtual void DidReceiveTitle(WebLocalFrame* frame,
-                               const WebString& title,
+  virtual void DidReceiveTitle(const WebString& title,
                                WebTextDirection direction) {}
 
   // The icon for the page have changed.
diff --git a/ui/file_manager/zip_archiver/manifest.json b/ui/file_manager/zip_archiver/manifest.json
index 3dd41e2f..741c599 100644
--- a/ui/file_manager/zip_archiver/manifest.json
+++ b/ui/file_manager/zip_archiver/manifest.json
@@ -26,12 +26,12 @@
       "types":["application/zip"],
       "extensions": ["zip"],
       "verb": "open_with"
+    },
+    "pack": {
+      "types": ["*"],
+      "include_directories": true,
+      "verb": "pack_with"
     }
-    // "pack": {
-    //   "types": ["*"],
-    //   "include_directories": true,
-    //   "verb": "pack_with"
-    // }
   },
   "icons": {
     "16": "icons/icon16.png",