⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 176696 in webkit


Ignore:
Timestamp:
Dec 2, 2014, 4:30:17 PM (12 years ago)
Author:
andersca@apple.com
Message:

Begin stubbing out a StorageNamespaceProvider class
https://bugs.webkit.org/show_bug.cgi?id=139203

Reviewed by Tim Horton.

  • CMakeLists.txt:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::localStorage):
If the page has a storage namespace provider, get the local storage from it.

  • page/Page.cpp:

(WebCore::Page::Page):
Move the storage namespace provider from the configuration.

(WebCore::Page::setStorageNamespaceProvider):
Add a setter. This will be used by setGroupName.

  • page/Page.h:

(WebCore::Page::storageNamespaceProvider):
Add a getter.

  • page/PageConfiguration.cpp:
  • page/PageConfiguration.h:

Add a storage namespace provider member.

  • storage/StorageNamespaceProvider.cpp:

(WebCore::StorageNamespaceProvider::StorageNamespaceProvider):
(WebCore::StorageNamespaceProvider::~StorageNamespaceProvider):
(WebCore::StorageNamespaceProvider::addPage):
(WebCore::StorageNamespaceProvider::removePage):
(WebCore::StorageNamespaceProvider::localStorageNamespace):
(WebCore::StorageNamespaceProvider::transientLocalStorageNamespace):

  • storage/StorageNamespaceProvider.h:

Stub out a storage namespace provider class.

Location:
trunk/Source/WebCore
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r176683 r176696  
    24832483    storage/StorageNamespace.cpp
    24842484    storage/StorageNamespaceImpl.cpp
     2485    storage/StorageNamespaceProvider.cpp
    24852486    storage/StorageStrategy.cpp
    24862487    storage/StorageSyncManager.cpp
  • trunk/Source/WebCore/ChangeLog

    r176694 r176696  
     12014-12-02  Anders Carlsson  <andersca@apple.com>
     2
     3        Begin stubbing out a StorageNamespaceProvider class
     4        https://bugs.webkit.org/show_bug.cgi?id=139203
     5
     6        Reviewed by Tim Horton.
     7
     8        * CMakeLists.txt:
     9        * WebCore.vcxproj/WebCore.vcxproj:
     10        * WebCore.vcxproj/WebCore.vcxproj.filters:
     11        * WebCore.xcodeproj/project.pbxproj:
     12        Add new files.
     13
     14        * page/DOMWindow.cpp:
     15        (WebCore::DOMWindow::localStorage):
     16        If the page has a storage namespace provider, get the local storage from it.
     17
     18        * page/Page.cpp:
     19        (WebCore::Page::Page):
     20        Move the storage namespace provider from the configuration.
     21
     22        (WebCore::Page::setStorageNamespaceProvider):
     23        Add a setter. This will be used by setGroupName.
     24
     25        * page/Page.h:
     26        (WebCore::Page::storageNamespaceProvider):
     27        Add a getter.
     28
     29        * page/PageConfiguration.cpp:
     30        * page/PageConfiguration.h:
     31        Add a storage namespace provider member.
     32
     33        * storage/StorageNamespaceProvider.cpp:
     34        (WebCore::StorageNamespaceProvider::StorageNamespaceProvider):
     35        (WebCore::StorageNamespaceProvider::~StorageNamespaceProvider):
     36        (WebCore::StorageNamespaceProvider::addPage):
     37        (WebCore::StorageNamespaceProvider::removePage):
     38        (WebCore::StorageNamespaceProvider::localStorageNamespace):
     39        (WebCore::StorageNamespaceProvider::transientLocalStorageNamespace):
     40        * storage/StorageNamespaceProvider.h:
     41        Stub out a storage namespace provider class.
     42
    1432014-12-02  Beth Dakin  <bdakin@apple.com>
    244
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r176683 r176696  
    1785917859    <ClCompile Include="..\storage\StorageNamespace.cpp" />
    1786017860    <ClCompile Include="..\storage\StorageNamespaceImpl.cpp" />
     17861    <ClCompile Include="..\storage\StorageNamespaceProvider.cpp" />
    1786117862    <ClCompile Include="..\storage\StorageSyncManager.cpp" />
    1786217863    <ClCompile Include="..\storage\StorageThread.cpp" />
     
    2126021261    <ClInclude Include="..\storage\StorageNamespace.h" />
    2126121262    <ClInclude Include="..\storage\StorageNamespaceImpl.h" />
     21263    <ClInclude Include="..\storage\StorageNamespaceProvider.h" />
    2126221264    <ClInclude Include="..\storage\StorageSyncManager.h" />
    2126321265    <ClInclude Include="..\storage\StorageThread.h" />
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters

    r176670 r176696  
    47054705      <Filter>storage</Filter>
    47064706    </ClCompile>
     4707    <ClCompile Include="..\storage\StorageNamespaceProvider.cpp">
     4708      <Filter>storage</Filter>
     4709    </ClCompile>
    47074710    <ClCompile Include="..\storage\StorageSyncManager.cpp">
    47084711      <Filter>storage</Filter>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r176684 r176696  
    700700                1A3586E015264C450022A659 /* RenderMultiColumnFlowThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3586DE15264C450022A659 /* RenderMultiColumnFlowThread.h */; };
    701701                1A3586E115264F950022A659 /* SVGAnimatedIntegerOptionalInteger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71E623CE151F72A60036E2F4 /* SVGAnimatedIntegerOptionalInteger.cpp */; };
     702                1A37636B1A2E68BB009A7EE2 /* StorageNamespaceProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3763691A2E68BB009A7EE2 /* StorageNamespaceProvider.cpp */; };
     703                1A37636C1A2E68BB009A7EE2 /* StorageNamespaceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A37636A1A2E68BB009A7EE2 /* StorageNamespaceProvider.h */; };
    702704                1A3FF9C315265359002288A1 /* RenderNamedFlowThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC85F23E1519187300BC17BE /* RenderNamedFlowThread.cpp */; };
    703705                1A494BFA0A122F4400FDAFC1 /* JSHTMLElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A494BF80A122F4400FDAFC1 /* JSHTMLElement.cpp */; };
     
    76847686                1A3586DD15264C450022A659 /* RenderMultiColumnFlowThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMultiColumnFlowThread.cpp; sourceTree = "<group>"; };
    76857687                1A3586DE15264C450022A659 /* RenderMultiColumnFlowThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMultiColumnFlowThread.h; sourceTree = "<group>"; };
     7688                1A3763691A2E68BB009A7EE2 /* StorageNamespaceProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StorageNamespaceProvider.cpp; sourceTree = "<group>"; };
     7689                1A37636A1A2E68BB009A7EE2 /* StorageNamespaceProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageNamespaceProvider.h; sourceTree = "<group>"; };
    76867690                1A494BBB0A122DCD00FDAFC1 /* HTMLElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLElement.idl; sourceTree = "<group>"; };
    76877691                1A494BF80A122F4400FDAFC1 /* JSHTMLElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLElement.cpp; sourceTree = "<group>"; };
     
    1513115135                                C55E38BC10040D5D00A56BDB /* StorageNamespaceImpl.cpp */,
    1513215136                                C55E38BB10040D5D00A56BDB /* StorageNamespaceImpl.h */,
     15137                                1A3763691A2E68BB009A7EE2 /* StorageNamespaceProvider.cpp */,
     15138                                1A37636A1A2E68BB009A7EE2 /* StorageNamespaceProvider.h */,
    1513315139                                1AB09DB216AF5F6C008538E7 /* StorageStrategy.cpp */,
    1513415140                                1AB09DB316AF5F6C008538E7 /* StorageStrategy.h */,
     
    2478024786                                2E2D99CE10E2BBDA00496337 /* JSBlob.h in Headers */,
    2478124787                                1449E24C107D4A8400B5793F /* JSCallbackData.h in Headers */,
     24788                                1A37636C1A2E68BB009A7EE2 /* StorageNamespaceProvider.h in Headers */,
    2478224789                                65DF323A09D1DE65000BE325 /* JSCanvasGradient.h in Headers */,
    2478324790                                65DF323C09D1DE65000BE325 /* JSCanvasPattern.h in Headers */,
     
    2855928566                                BCD9C2C20C17B69E005C90A2 /* JSNodeList.cpp in Sources */,
    2856028567                                BCD9C2650C17AA67005C90A2 /* JSNodeListCustom.cpp in Sources */,
     28568                                1A37636B1A2E68BB009A7EE2 /* StorageNamespaceProvider.cpp in Sources */,
    2856128569                                65DF31FD09D1CC60000BE325 /* JSNotation.cpp in Sources */,
    2856228570                                33503CA310179AD7003B47E1 /* JSNotification.cpp in Sources */,
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r176065 r176696  
    9393#include "StorageArea.h"
    9494#include "StorageNamespace.h"
     95#include "StorageNamespaceProvider.h"
    9596#include "StyleMedia.h"
    9697#include "StyleResolver.h"
     
    857858
    858859    RefPtr<StorageArea> storageArea;
    859     if (!document->securityOrigin()->canAccessLocalStorage(document->topOrigin()))
    860         storageArea = page->group().transientLocalStorage(document->topOrigin())->storageArea(document->securityOrigin());
    861     else
    862         storageArea = page->group().localStorage()->storageArea(document->securityOrigin());
     860    if (auto* storageNamespaceProvider = page->storageNamespaceProvider()) {
     861        if (document->securityOrigin()->canAccessLocalStorage(document->topOrigin()))
     862            storageArea = storageNamespaceProvider->localStorageNamespace().storageArea(document->securityOrigin());
     863        else
     864            storageArea = storageNamespaceProvider->transientLocalStorageNamespace(*document->topOrigin()).storageArea(document->securityOrigin());
     865    } else {
     866        // FIXME: Remove this once everyone has transitioned away from using the page group local storage.
     867        if (!document->securityOrigin()->canAccessLocalStorage(document->topOrigin()))
     868            storageArea = page->group().transientLocalStorage(document->topOrigin())->storageArea(document->securityOrigin());
     869        else
     870            storageArea = page->group().localStorage()->storageArea(document->securityOrigin());
     871    }
    863872
    864873    if (!storageArea->canAccessStorage(m_frame)) {
  • trunk/Source/WebCore/page/Page.cpp

    r176683 r176696  
    8080#include "StorageArea.h"
    8181#include "StorageNamespace.h"
     82#include "StorageNamespaceProvider.h"
    8283#include "StyleResolver.h"
    8384#include "SubframeLoader.h"
     
    202203    , m_lastSpatialNavigationCandidatesCount(0) // NOTE: Only called from Internals for Spatial Navigation testing.
    203204    , m_framesHandlingBeforeUnloadEvent(0)
     205    , m_storageNamespaceProvider(WTF::move(pageConfiguration.storageNamespaceProvider))
    204206    , m_userContentController(WTF::move(pageConfiguration.userContentController))
    205207    , m_visitedLinkStore(*WTF::move(pageConfiguration.visitedLinkStore))
     
    212214    setTimerThrottlingEnabled(m_viewState & ViewState::IsVisuallyIdle);
    213215
     216    if (m_storageNamespaceProvider)
     217        m_storageNamespaceProvider->addPage(*this);
    214218    if (m_userContentController)
    215219        m_userContentController->addPage(*this);
     
    16121616}
    16131617
     1618void Page::setStorageNamespaceProvider(PassRef<StorageNamespaceProvider> storageNamespaceProvider)
     1619{
     1620    if (m_storageNamespaceProvider)
     1621        m_storageNamespaceProvider->removePage(*this);
     1622
     1623    m_storageNamespaceProvider = WTF::move(storageNamespaceProvider);
     1624    m_storageNamespaceProvider->addPage(*this);
     1625
     1626    // This needs to reset all the local storage namespaces of all the pages.
     1627}
     1628
    16141629VisitedLinkStore& Page::visitedLinkStore()
    16151630{
  • trunk/Source/WebCore/page/Page.h

    r176683 r176696  
    101101class Settings;
    102102class StorageNamespace;
     103class StorageNamespaceProvider;
    103104class UserContentController;
    104105class ValidationMessageClient;
     
    399400    unsigned lastSpatialNavigationCandidateCount() const { return m_lastSpatialNavigationCandidatesCount; }
    400401
     402    StorageNamespaceProvider* storageNamespaceProvider() { return m_storageNamespaceProvider.get(); }
     403    void setStorageNamespaceProvider(PassRef<StorageNamespaceProvider>);
     404
    401405    UserContentController* userContentController() { return m_userContentController.get(); }
    402406    void setUserContentController(UserContentController*);
     
    567571    unsigned m_framesHandlingBeforeUnloadEvent;
    568572
     573    RefPtr<StorageNamespaceProvider> m_storageNamespaceProvider;
    569574    RefPtr<UserContentController> m_userContentController;
    570575    Ref<VisitedLinkStore> m_visitedLinkStore;
  • trunk/Source/WebCore/page/PageConfiguration.cpp

    r176499 r176696  
    2828
    2929#include "BackForwardClient.h"
     30#include "StorageNamespaceProvider.h"
    3031#include "UserContentController.h"
    3132#include "VisitedLinkStore.h"
  • trunk/Source/WebCore/page/PageConfiguration.h

    r176499 r176696  
    4545class PlugInClient;
    4646class ProgressTrackerClient;
     47class StorageNamespaceProvider;
    4748class UserContentController;
    4849class ValidationMessageClient;
     
    7071    DiagnosticLoggingClient* diagnosticLoggingClient;
    7172
     73    RefPtr<StorageNamespaceProvider> storageNamespaceProvider;
    7274    RefPtr<UserContentController> userContentController;
    7375    RefPtr<VisitedLinkStore> visitedLinkStore;
Note: See TracChangeset for help on using the changeset viewer.