diff options
author | markusheintz <markusheintz@chromium.org> | 2016-02-19 07:58:00 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-19 15:59:18 +0000 |
commit | 03d42fb9406274498afdeb8e346573ca9364d423 (patch) | |
tree | 78cce0babcb5758fc92d627546ea8fd9c995b196 /ios | |
parent | 4f56799de0e3221ab0e15c8b5ae44cd2b00ec5a7 (diff) | |
download | chromium_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}
Diffstat (limited to 'ios')
3 files changed, 0 insertions, 55 deletions
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()); -} |