summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkusheintz <markusheintz@chromium.org>2016-02-19 07:58:00 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-19 15:59:18 +0000
commit03d42fb9406274498afdeb8e346573ca9364d423 (patch)
tree78cce0babcb5758fc92d627546ea8fd9c995b196
parent4f56799de0e3221ab0e15c8b5ae44cd2b00ec5a7 (diff)
downloadchromium_src-03d42fb9406274498afdeb8e346573ca9364d423.zip
chromium_src-03d42fb9406274498afdeb8e346573ca9364d423.tar.gz
chromium_src-03d42fb9406274498afdeb8e346573ca9364d423.tar.bz2
Revert of Release unused web views when under memory pressure. (patchset #5 id:100001 of https://codereview.chromium.org/1708643002/ )
Reason for revert: TypedUrlSyncableServiceTest.DeleteUrlAndVisits fails on Win and CROS ASAN: Win: https://build.chromium.org/p/chromium.win/builders/Win7%20Tests%20%28dbg%29%281%29/builds/46063/steps/components_unittests/logs/TypedUrlSyncableServiceTest.DeleteUrlAndVisits https://build.chromium.org/p/chromium.win/buildstatus?builder=Win7%20Tests%20%28dbg%29%281%29&number=46064 https://build.chromium.org/p/chromium.win/buildstatus?builder=Win7%20Tests%20%28dbg%29%281%29&number=46063 CROS ASAN: https://build.chromium.org/p/chromium.memory/builders/Linux%20Chromium%20OS%20ASan%20LSan%20Tests%20%281%29/builds/9861/steps/components_unittests/logs/TypedUrlSyncableServiceTest.DeleteUrlAndVisits https://build.chromium.org/p/chromium.memory/buildstatus?builder=Linux%20Chromium%20OS%20ASan%20LSan%20Tests%20%281%29&number=9861 Original issue's description: > Release unused web views when under memory pressure. > > AccountConsistencyService and GaiaAuthFetcherIOS both use web views > internally to manipulate cookies. Once allocated, those web views were > never released to avoid having to re-allocate them later (which is > expensive). > > Those web views are now released when they are unused and the app is > under memory pressure. > > BUG=587487 > > Committed: https://crrev.com/8a730bd4d690e5c9f9b3639cbedec5b5dc2bbe12 > Cr-Commit-Position: refs/heads/master@{#376431} TBR=msarda@chromium.org,zea@chromium.org,bzanotti@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=587487 Review URL: https://codereview.chromium.org/1713973003 Cr-Commit-Position: refs/heads/master@{#376445}
-rw-r--r--components/history/core/browser/typed_url_syncable_service_unittest.cc7
-rw-r--r--components/signin/ios/browser/account_consistency_service.h8
-rw-r--r--components/signin/ios/browser/account_consistency_service.mm13
-rw-r--r--components/signin/ios/browser/account_consistency_service_unittest.mm31
-rw-r--r--ios/chrome/browser/signin/gaia_auth_fetcher_ios.mm14
-rw-r--r--ios/chrome/browser/signin/gaia_auth_fetcher_ios_private.h8
-rw-r--r--ios/chrome/browser/signin/gaia_auth_fetcher_ios_unittest.mm33
7 files changed, 0 insertions, 114 deletions
diff --git a/components/history/core/browser/typed_url_syncable_service_unittest.cc b/components/history/core/browser/typed_url_syncable_service_unittest.cc
index 978315a..a2a6b6f 100644
--- a/components/history/core/browser/typed_url_syncable_service_unittest.cc
+++ b/components/history/core/browser/typed_url_syncable_service_unittest.cc
@@ -228,13 +228,6 @@ class TypedUrlSyncableServiceTest : public testing::Test {
fake_change_processor_.reset(new syncer::FakeSyncChangeProcessor);
}
- void TearDown() override {
- // If |fake_history_backend_| has a scheduled commit task, the task and the
- // backend are retaining each other and the backend will leak. Closing the
- // backend ensures it is correctly destroyed.
- fake_history_backend_->Closing();
- }
-
// Starts sync for |typed_url_sync_service_| with |initial_data| as the
// initial sync data.
void StartSyncing(const syncer::SyncDataList& initial_data);
diff --git a/components/signin/ios/browser/account_consistency_service.h b/components/signin/ios/browser/account_consistency_service.h
index 80b2745..df360e3 100644
--- a/components/signin/ios/browser/account_consistency_service.h
+++ b/components/signin/ios/browser/account_consistency_service.h
@@ -12,7 +12,6 @@
#include "base/mac/scoped_nsobject.h"
#include "base/macros.h"
-#include "base/memory/memory_pressure_listener.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/time/time.h"
@@ -152,10 +151,6 @@ class AccountConsistencyService : public KeyedService,
void OnActive() override;
void OnInactive() override;
- // Memory pressure callback.
- void OnMemoryPressure(
- base::MemoryPressureListener::MemoryPressureLevel level);
-
// Browser state associated with the service, used to create WKWebViews.
web::BrowserState* browser_state_;
// Service managing accounts reconciliation, notified of GAIA responses with
@@ -192,9 +187,6 @@ class AccountConsistencyService : public KeyedService,
std::map<web::WebState*, scoped_ptr<web::WebStatePolicyDecider>>
web_state_handlers_;
- // Listens to memory pressure notifications.
- scoped_ptr<base::MemoryPressureListener> memory_pressure_listener_;
-
DISALLOW_COPY_AND_ASSIGN(AccountConsistencyService);
};
diff --git a/components/signin/ios/browser/account_consistency_service.mm b/components/signin/ios/browser/account_consistency_service.mm
index 84d82d5..cff50d4 100644
--- a/components/signin/ios/browser/account_consistency_service.mm
+++ b/components/signin/ios/browser/account_consistency_service.mm
@@ -214,9 +214,6 @@ AccountConsistencyService::AccountConsistencyService(
gaia_cookie_manager_service_->AddObserver(this);
signin_manager_->AddObserver(this);
web::BrowserState::GetActiveStateManager(browser_state_)->AddObserver(this);
- memory_pressure_listener_.reset(new base::MemoryPressureListener(base::Bind(
- &AccountConsistencyService::OnMemoryPressure, base::Unretained(this))));
-
LoadFromPrefs();
if (signin_manager_->IsAuthenticated()) {
AddXChromeConnectedCookies();
@@ -479,13 +476,3 @@ void AccountConsistencyService::OnInactive() {
// a new one until it is active.
ResetWKWebView();
}
-
-void AccountConsistencyService::OnMemoryPressure(
- base::MemoryPressureListener::MemoryPressureLevel level) {
- bool is_memory_pressure_critical =
- (level == base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
- if (is_memory_pressure_critical && !applying_cookie_requests_) {
- // |web_view_| isn't being used, release it.
- ResetWKWebView();
- }
-}
diff --git a/components/signin/ios/browser/account_consistency_service_unittest.mm b/components/signin/ios/browser/account_consistency_service_unittest.mm
index c71430b..00d6857 100644
--- a/components/signin/ios/browser/account_consistency_service_unittest.mm
+++ b/components/signin/ios/browser/account_consistency_service_unittest.mm
@@ -6,7 +6,6 @@
#import "base/mac/scoped_nsobject.h"
#include "base/memory/scoped_ptr.h"
-#include "base/run_loop.h"
#include "components/pref_registry/testing_pref_service_syncable.h"
#include "components/signin/core/browser/account_reconcilor.h"
#include "components/signin/core/browser/account_tracker_service.h"
@@ -179,7 +178,6 @@ class AccountConsistencyServiceTest : public PlatformTest {
void SignOut() { signin_manager_->ForceSignOut(); }
- bool HasWKWebView() { return account_consistency_service_->web_view_; }
id GetMockWKWebView() { return account_consistency_service_->GetWKWebView(); }
id GetNavigationDelegate() {
return account_consistency_service_->navigation_delegate_;
@@ -461,32 +459,3 @@ TEST_F(AccountConsistencyServiceTest, SigninAddCookieOnMainDomains) {
CheckDomainHasCookie(kGoogleDomain);
CheckDomainHasCookie(kYoutubeDomain);
}
-
-// Tests that the web view is not released when receiving a memory pressure
-// notification if it is being used.
-TEST_F(AccountConsistencyServiceTest, UsedWebViewNotReleasedOnMemoryPressure) {
- AddPageLoadedExpectation(kGoogleUrl, false /* continue_navigation */);
- SignIn();
-
- base::MemoryPressureListener::NotifyMemoryPressure(
- base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
- base::RunLoop().RunUntilIdle();
-
- EXPECT_TRUE(HasWKWebView());
- EXPECT_OCMOCK_VERIFY(GetMockWKWebView());
-}
-
-// Tests that the web view is correctly released when receiving a memory
-// pressure notification if it is not being used.
-TEST_F(AccountConsistencyServiceTest, UnusedWebViewReleasedOnMemoryPressure) {
- AddPageLoadedExpectation(kGoogleUrl, true /* continue_navigation */);
- AddPageLoadedExpectation(kYoutubeUrl, true /* continue_navigation */);
- SignIn();
-
- base::MemoryPressureListener::NotifyMemoryPressure(
- base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
- base::RunLoop().RunUntilIdle();
-
- EXPECT_FALSE(HasWKWebView());
- EXPECT_OCMOCK_VERIFY(GetMockWKWebView());
-}
diff --git a/ios/chrome/browser/signin/gaia_auth_fetcher_ios.mm b/ios/chrome/browser/signin/gaia_auth_fetcher_ios.mm
index 2790a68..a8c3da6 100644
--- a/ios/chrome/browser/signin/gaia_auth_fetcher_ios.mm
+++ b/ios/chrome/browser/signin/gaia_auth_fetcher_ios.mm
@@ -6,8 +6,6 @@
#import <WebKit/WebKit.h>
-#include "base/bind.h"
-#include "base/bind_helpers.h"
#include "base/json/string_escape.h"
#include "base/logging.h"
#import "base/mac/foundation_util.h"
@@ -212,8 +210,6 @@ GaiaAuthFetcherIOSBridge::GaiaAuthFetcherIOSBridge(
web::BrowserState* browser_state)
: browser_state_(browser_state), fetcher_(fetcher), request_() {
web::BrowserState::GetActiveStateManager(browser_state_)->AddObserver(this);
- memory_pressure_listener_.reset(new base::MemoryPressureListener(base::Bind(
- &GaiaAuthFetcherIOSBridge::OnMemoryPressure, base::Unretained(this))));
}
GaiaAuthFetcherIOSBridge::~GaiaAuthFetcherIOSBridge() {
@@ -315,16 +311,6 @@ void GaiaAuthFetcherIOSBridge::OnInactive() {
ResetWKWebView();
}
-void GaiaAuthFetcherIOSBridge::OnMemoryPressure(
- base::MemoryPressureListener::MemoryPressureLevel level) {
- bool is_memory_pressure_critical =
- (level == base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
- if (is_memory_pressure_critical && !request_.pending) {
- // |web_view_| isn't being used, release it.
- ResetWKWebView();
- }
-}
-
#pragma mark - GaiaAuthFetcherIOS definition
GaiaAuthFetcherIOS::GaiaAuthFetcherIOS(GaiaAuthConsumer* consumer,
diff --git a/ios/chrome/browser/signin/gaia_auth_fetcher_ios_private.h b/ios/chrome/browser/signin/gaia_auth_fetcher_ios_private.h
index d7097c6..0fd1a41 100644
--- a/ios/chrome/browser/signin/gaia_auth_fetcher_ios_private.h
+++ b/ios/chrome/browser/signin/gaia_auth_fetcher_ios_private.h
@@ -9,7 +9,6 @@
#import "base/mac/scoped_nsobject.h"
#include "base/macros.h"
-#include "base/memory/memory_pressure_listener.h"
#include "ios/web/public/active_state_manager.h"
class GaiaAuthFetcherIOS;
@@ -93,10 +92,6 @@ class GaiaAuthFetcherIOSBridge : web::ActiveStateManager::Observer {
void OnActive() override;
void OnInactive() override;
- // Memory pressure callback.
- void OnMemoryPressure(
- base::MemoryPressureListener::MemoryPressureLevel level);
-
// Browser state associated with the bridge, used to create WKWebViews.
web::BrowserState* browser_state_;
// Fetcher owning this bridge.
@@ -109,9 +104,6 @@ class GaiaAuthFetcherIOSBridge : web::ActiveStateManager::Observer {
// Web view used to do the network requests.
base::scoped_nsobject<WKWebView> web_view_;
- // Listens to memory pressure notifications.
- scoped_ptr<base::MemoryPressureListener> memory_pressure_listener_;
-
DISALLOW_COPY_AND_ASSIGN(GaiaAuthFetcherIOSBridge);
};
diff --git a/ios/chrome/browser/signin/gaia_auth_fetcher_ios_unittest.mm b/ios/chrome/browser/signin/gaia_auth_fetcher_ios_unittest.mm
index fea9c49..822ac27 100644
--- a/ios/chrome/browser/signin/gaia_auth_fetcher_ios_unittest.mm
+++ b/ios/chrome/browser/signin/gaia_auth_fetcher_ios_unittest.mm
@@ -72,7 +72,6 @@ class GaiaAuthFetcherIOSTest : public PlatformTest {
return gaia_auth_fetcher_->bridge_.get();
}
- bool HasWKWebView() { return gaia_auth_fetcher_->bridge_->web_view_; }
id GetMockWKWebView() { return gaia_auth_fetcher_->bridge_->GetWKWebView(); }
web::TestWebThreadBundle thread_bundle_;
@@ -192,35 +191,3 @@ TEST_F(GaiaAuthFetcherIOSTest, StopOnInactiveReFetchOnActive) {
web::BrowserState::GetActiveStateManager(&browser_state_)->SetActive(true);
EXPECT_OCMOCK_VERIFY(GetMockWKWebView());
}
-
-// Tests that the web view is not released when receiving a memory pressure
-// notification if it is being used.
-TEST_F(GaiaAuthFetcherIOSTest, UsedWebViewNotReleasedOnMemoryPressure) {
- [static_cast<WKWebView*>([GetMockWKWebView() expect])
- loadRequest:[OCMArg any]];
- gaia_auth_fetcher_->StartMergeSession("uber_token", "");
-
- base::MemoryPressureListener::NotifyMemoryPressure(
- base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
- base::RunLoop().RunUntilIdle();
-
- EXPECT_TRUE(HasWKWebView());
- EXPECT_OCMOCK_VERIFY(GetMockWKWebView());
-}
-
-// Tests that the web view is correctly released when receiving a memory
-// pressure notification if it is not being used.
-TEST_F(GaiaAuthFetcherIOSTest, UnusedWebViewReleasedOnMemoryPressure) {
- EXPECT_CALL(consumer_, OnMergeSessionSuccess("data")).Times(1);
- [static_cast<WKWebView*>([[GetMockWKWebView() expect] andDo:^(NSInvocation*) {
- GetBridge()->URLFetchSuccess("data");
- }]) loadRequest:[OCMArg any]];
- gaia_auth_fetcher_->StartMergeSession("uber_token", "");
-
- base::MemoryPressureListener::NotifyMemoryPressure(
- base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
- base::RunLoop().RunUntilIdle();
-
- EXPECT_FALSE(HasWKWebView());
- EXPECT_OCMOCK_VERIFY(GetMockWKWebView());
-}