Changeset 212965 in webkit


Ignore:
Timestamp:
Feb 24, 2017 11:51:17 AM (7 years ago)
Author:
Chris Dumez
Message:

[iOS][WK2] Disable network cache speculative revalidation / loading in low power mode
https://bugs.webkit.org/show_bug.cgi?id=168832
<rdar://problem/30697911>

Reviewed by Antti Koivisto.

Source/WebCore:

Add LowPowerModeNotifier class to monitor low power mode state on iOS.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/LowPowerModeNotifier.cpp: Added.

(WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::isLowPowerModeEnabled):

  • platform/LowPowerModeNotifier.h: Added.
  • platform/ios/LowPowerModeNotifierIOS.mm: Added.

(-[WebLowPowerModeObserver initWithNotifier:]):
(-[WebLowPowerModeObserver dealloc]):
(-[WebLowPowerModeObserver _didReceiveLowPowerModeChange]):
(WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
(WebCore::LowPowerModeNotifier::isLowPowerModeEnabled):
(WebCore::LowPowerModeNotifier::notifyLowPowerModeChanged):
(WebCore::notifyLowPowerModeChanged):

Source/WebKit2:

Disable network cache speculative revalidation / loading in low power mode on iOS to
save battery.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::initialize):

  • NetworkProcess/cache/NetworkCache.h:
Location:
trunk/Source
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r212961 r212965  
     12017-02-24  Chris Dumez  <cdumez@apple.com>
     2
     3        [iOS][WK2] Disable network cache speculative revalidation / loading in low power mode
     4        https://bugs.webkit.org/show_bug.cgi?id=168832
     5        <rdar://problem/30697911>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        Add LowPowerModeNotifier class to monitor low power mode state on iOS.
     10
     11        * WebCore.xcodeproj/project.pbxproj:
     12        * platform/LowPowerModeNotifier.cpp: Added.
     13        (WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
     14        (WebCore::LowPowerModeNotifier::isLowPowerModeEnabled):
     15        * platform/LowPowerModeNotifier.h: Added.
     16        * platform/ios/LowPowerModeNotifierIOS.mm: Added.
     17        (-[WebLowPowerModeObserver initWithNotifier:]):
     18        (-[WebLowPowerModeObserver dealloc]):
     19        (-[WebLowPowerModeObserver _didReceiveLowPowerModeChange]):
     20        (WebCore::LowPowerModeNotifier::LowPowerModeNotifier):
     21        (WebCore::LowPowerModeNotifier::isLowPowerModeEnabled):
     22        (WebCore::LowPowerModeNotifier::notifyLowPowerModeChanged):
     23        (WebCore::notifyLowPowerModeChanged):
     24
    1252017-02-24  Chris Dumez  <cdumez@apple.com>
    226
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r212944 r212965  
    17801780                46DFF49C1DC2620B00B80B48 /* JSShadowRootMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 46DFF49A1DC261F900B80B48 /* JSShadowRootMode.h */; };
    17811781                46EBEA021B7D4D6500BE4941 /* CollectionTraversal.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EBEA011B7D4D5D00BE4941 /* CollectionTraversal.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1782                46EFAF0E1E5FB9CA00E7F34B /* LowPowerModeNotifierIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 46EFAF0D1E5FB9C200E7F34B /* LowPowerModeNotifierIOS.mm */; };
     1783                46EFAF111E5FB9F100E7F34B /* LowPowerModeNotifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46EFAF0F1E5FB9E100E7F34B /* LowPowerModeNotifier.cpp */; };
     1784                46EFAF121E5FB9F100E7F34B /* LowPowerModeNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EFAF101E5FB9E100E7F34B /* LowPowerModeNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17821785                46FCB6181A70820E00C5A21E /* DiagnosticLoggingKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = CD37B37515C1A7E1006DC898 /* DiagnosticLoggingKeys.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17831786                490707E61219C04300D90E51 /* ANGLEWebKitBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */; };
     
    90979100                46DFF49A1DC261F900B80B48 /* JSShadowRootMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSShadowRootMode.h; sourceTree = "<group>"; };
    90989101                46EBEA011B7D4D5D00BE4941 /* CollectionTraversal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionTraversal.h; sourceTree = "<group>"; };
     9102                46EFAF0D1E5FB9C200E7F34B /* LowPowerModeNotifierIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LowPowerModeNotifierIOS.mm; sourceTree = "<group>"; };
     9103                46EFAF0F1E5FB9E100E7F34B /* LowPowerModeNotifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LowPowerModeNotifier.cpp; sourceTree = "<group>"; };
     9104                46EFAF101E5FB9E100E7F34B /* LowPowerModeNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LowPowerModeNotifier.h; sourceTree = "<group>"; };
    90999105                490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ANGLEWebKitBridge.cpp; sourceTree = "<group>"; };
    91009106                490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGLEWebKitBridge.h; sourceTree = "<group>"; };
     
    2011020116                                E4E39AFA1330EFA8003AB274 /* LegacyTileLayerPool.h */,
    2011120117                                E4E39AFC1330EFC5003AB274 /* LegacyTileLayerPool.mm */,
     20118                                46EFAF0D1E5FB9C200E7F34B /* LowPowerModeNotifierIOS.mm */,
    2011220119                                E45390190EAFCACA003695C8 /* PasteboardIOS.mm */,
    2011320120                                26601EBD14B3B9AD0012C0FE /* PlatformEventFactoryIOS.h */,
     
    2298722994                                0FDCD7F21D47E655009F08BC /* LogInitialization.h */,
    2298822995                                0FDCD7F41D47E725009F08BC /* LogMacros.h */,
     22996                                46EFAF0F1E5FB9E100E7F34B /* LowPowerModeNotifier.cpp */,
     22997                                46EFAF101E5FB9E100E7F34B /* LowPowerModeNotifier.h */,
    2298922998                                7AE6C9391BE0C60100E19E03 /* MainThreadSharedTimer.cpp */,
    2299022999                                7AE6C93A1BE0C60100E19E03 /* MainThreadSharedTimer.h */,
     
    2808828097                                E4E9B1191810916F003ACCDF /* SimpleLineLayoutResolver.h in Headers */,
    2808928098                                582CB0531A78A14B00AFFCC4 /* SimpleLineLayoutTextFragmentIterator.h in Headers */,
     28099                                46EFAF121E5FB9F100E7F34B /* LowPowerModeNotifier.h in Headers */,
    2809028100                                C5A1EA7D152BCF08004D00B6 /* SimplifyMarkupCommand.h in Headers */,
    2809128101                                572A7F211C6E5719009C6149 /* SimulatedClick.h in Headers */,
     
    3129831308                                854FE7320A2297BE0058D7AD /* NodeFilterCondition.cpp in Sources */,
    3129931309                                854FE7340A2297BE0058D7AD /* NodeIterator.cpp in Sources */,
     31310                                46EFAF0E1E5FB9CA00E7F34B /* LowPowerModeNotifierIOS.mm in Sources */,
    3130031311                                4FFC022B1643B710004E1638 /* NodeRareData.cpp in Sources */,
    3130131312                                E43105B816750F0C00DB2FB8 /* NodeTraversal.cpp in Sources */,
     
    3240032411                                00B9318B13BA8DC90035A948 /* XMLDocumentParserScope.cpp in Sources */,
    3240132412                                59C28045138DC2410079B7E2 /* XMLErrors.cpp in Sources */,
     32413                                46EFAF111E5FB9F100E7F34B /* LowPowerModeNotifier.cpp in Sources */,
    3240232414                                BC772C460C4EB2C60083285F /* XMLHttpRequest.cpp in Sources */,
    3240332415                                A136A00C1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp in Sources */,
  • trunk/Source/WebKit2/ChangeLog

    r212949 r212965  
     12017-02-24  Chris Dumez  <cdumez@apple.com>
     2
     3        [iOS][WK2] Disable network cache speculative revalidation / loading in low power mode
     4        https://bugs.webkit.org/show_bug.cgi?id=168832
     5        <rdar://problem/30697911>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        Disable network cache speculative revalidation / loading in low power mode on iOS to
     10        save battery.
     11
     12        * NetworkProcess/cache/NetworkCache.cpp:
     13        (WebKit::NetworkCache::Cache::initialize):
     14        * NetworkProcess/cache/NetworkCache.h:
     15
    1162017-02-24  John Wilander  <wilander@apple.com>
    217
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp

    r212244 r212965  
    3636#include <WebCore/FileSystem.h>
    3737#include <WebCore/HTTPHeaderNames.h>
     38#include <WebCore/LowPowerModeNotifier.h>
    3839#include <WebCore/NetworkStorageSession.h>
    3940#include <WebCore/PlatformCookieJar.h>
     
    7879
    7980#if ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION)
    80     if (parameters.enableNetworkCacheSpeculativeRevalidation)
    81         m_speculativeLoadManager = std::make_unique<SpeculativeLoadManager>(*m_storage);
     81    if (parameters.enableNetworkCacheSpeculativeRevalidation) {
     82        m_lowPowerModeNotifier = std::make_unique<WebCore::LowPowerModeNotifier>([this](bool isLowPowerModeEnabled) {
     83            ASSERT(WTF::isMainThread());
     84            if (isLowPowerModeEnabled)
     85                m_speculativeLoadManager = nullptr;
     86            else {
     87                ASSERT(!m_speculativeLoadManager);
     88                m_speculativeLoadManager = std::make_unique<SpeculativeLoadManager>(*m_storage);
     89            }
     90        });
     91        if (!m_lowPowerModeNotifier->isLowPowerModeEnabled())
     92            m_speculativeLoadManager = std::make_unique<SpeculativeLoadManager>(*m_storage);
     93    }
    8294#endif
    8395
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.h

    r212244 r212965  
    3737
    3838namespace WebCore {
     39class LowPowerModeNotifier;
    3940class ResourceRequest;
    4041class SharedBuffer;
     
    148149    std::unique_ptr<Storage> m_storage;
    149150#if ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION)
     151    std::unique_ptr<WebCore::LowPowerModeNotifier> m_lowPowerModeNotifier;
    150152    std::unique_ptr<SpeculativeLoadManager> m_speculativeLoadManager;
    151153#endif
Note: See TracChangeset for help on using the changeset viewer.