+2008-01-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam.
+
+ - remove SecurityOriginData and fold its functionality into SecurityOrigin
+
+ * GNUmakefile.am:
+ * WebCore.base.exp:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * WebCoreSources.bkl:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::postMessage):
+ * dom/Document.cpp:
+ (WebCore::Document::domain):
+ * page/Chrome.cpp:
+ (WebCore::Chrome::requestQuotaIncreaseForNewDatabase):
+ (WebCore::Chrome::requestQuotaIncreaseForDatabaseOperation):
+ * page/Chrome.h:
+ * page/ChromeClient.h:
+ * platform/SecurityOrigin.cpp:
+ (WebCore::SecurityOrigin::copy):
+ (WebCore::SecurityOrigin::createFromIdentifier):
+ (WebCore::SecurityOrigin::stringIdentifier):
+ * platform/SecurityOrigin.h:
+ (WebCore::SecurityOrigin::host):
+ (WebCore::SecurityOrigin::protocol):
+ (WebCore::SecurityOrigin::port):
+ (WebCore::SecurityOrigin::equal):
+ * platform/SecurityOriginData.cpp: Removed.
+ * platform/SecurityOriginData.h: Removed.
+ * storage/Database.cpp:
+ (WebCore::Database::openDatabase):
+ (WebCore::Database::Database):
+ (WebCore::Database::securityOriginCopy):
+ * storage/Database.h:
+ * storage/DatabaseTracker.cpp:
+ (WebCore::SecurityOriginHash::hash):
+ (WebCore::SecurityOriginHash::equal):
+ (WebCore::SecurityOriginTraits::deletedValue):
+ (WebCore::SecurityOriginTraits::emptyValue):
+ (WebCore::DatabaseTracker::canEstablishDatabase):
+ (WebCore::DatabaseTracker::hasEntryForOrigin):
+ (WebCore::DatabaseTracker::hasEntryForDatabase):
+ (WebCore::DatabaseTracker::establishEntryForOrigin):
+ (WebCore::DatabaseTracker::fullPathForDatabase):
+ (WebCore::DatabaseTracker::populateOrigins):
+ (WebCore::DatabaseTracker::origins):
+ (WebCore::DatabaseTracker::databaseNamesForOrigin):
+ (WebCore::DatabaseTracker::detailsForNameAndOrigin):
+ (WebCore::DatabaseTracker::setDatabaseDetails):
+ (WebCore::DatabaseTracker::usageForDatabase):
+ (WebCore::DatabaseTracker::usageForOrigin):
+ (WebCore::DatabaseTracker::quotaForOrigin):
+ (WebCore::DatabaseTracker::setQuota):
+ (WebCore::DatabaseTracker::addDatabase):
+ (WebCore::DatabaseTracker::deleteAllDatabases):
+ (WebCore::DatabaseTracker::deleteDatabasesWithOrigin):
+ (WebCore::DatabaseTracker::deleteDatabase):
+ (WebCore::DatabaseTracker::deleteDatabaseFile):
+ (WebCore::notificationQueue):
+ (WebCore::DatabaseTracker::scheduleNotifyDatabaseChanged):
+ (WebCore::DatabaseTracker::notifyDatabasesChanged):
+ * storage/DatabaseTracker.h:
+ * storage/DatabaseTrackerClient.h:
+ * storage/SQLTransaction.cpp:
+ (WebCore::SQLTransaction::openTransactionAndPreflight):
+ (WebCore::SQLTransaction::runStatements):
+ (WebCore::SQLTransaction::deliverQuotaIncreaseCallback):
+ (WebCore::SQLTransaction::postflightAndCommit):
+ (WebCore::SQLTransaction::cleanupAfterTransactionErrorCallback):
+ * svg/graphics/SVGImageEmptyClients.h:
+ (WebCore::SVGEmptyChromeClient::requestQuotaIncreaseForNewDatabase):
+ (WebCore::SVGEmptyChromeClient::requestQuotaIncreaseForDatabaseOperation):
+
2008-01-10 Anders Carlsson <andersca@apple.com>
Reviewed by Sam.
WebCore/platform/text/RegularExpression.cpp \
WebCore/platform/ScrollBar.cpp \
WebCore/platform/SecurityOrigin.cpp \
- WebCore/platform/SecurityOriginData.cpp \
WebCore/platform/text/SegmentedString.cpp \
WebCore/platform/SharedBuffer.cpp \
WebCore/platform/text/String.cpp \
__ZN7WebCore14DragController9dragEndedEv
__ZN7WebCore14ResourceHandle12releaseProxyEv
__ZN7WebCore14ResourceLoader14cancelledErrorEv
+__ZN7WebCore14SecurityOrigin6createERKNS_6StringES3_tPS0_
__ZN7WebCore15BackForwardList10removeItemEPNS_11HistoryItemE
__ZN7WebCore15BackForwardList10setEnabledEb
__ZN7WebCore15BackForwardList11currentItemEv
__ZN7WebCore15BackForwardListC1EPNS_4PageE
__ZN7WebCore15BackForwardListD1Ev
__ZN7WebCore15ContextMenuItem26releasePlatformDescriptionEv
-__ZN7WebCore15DatabaseTracker14deleteDatabaseERKNS_18SecurityOriginDataERKNS_6StringE
-__ZN7WebCore15DatabaseTracker14quotaForOriginERKNS_18SecurityOriginDataE
-__ZN7WebCore15DatabaseTracker14usageForOriginERKNS_18SecurityOriginDataE
+__ZN7WebCore15DatabaseTracker14deleteDatabaseEPNS_14SecurityOriginERKNS_6StringE
+__ZN7WebCore15DatabaseTracker14quotaForOriginEPNS_14SecurityOriginE
+__ZN7WebCore15DatabaseTracker14usageForOriginEPNS_14SecurityOriginE
__ZN7WebCore15DatabaseTracker15setDatabasePathERKNS_6StringE
__ZN7WebCore15DatabaseTracker18deleteAllDatabasesEv
-__ZN7WebCore15DatabaseTracker22databaseNamesForOriginERKNS_18SecurityOriginDataERN3WTF6VectorINS_6StringELm0EEE
-__ZN7WebCore15DatabaseTracker23detailsForNameAndOriginERKNS_6StringERKNS_18SecurityOriginDataE
-__ZN7WebCore15DatabaseTracker25deleteDatabasesWithOriginERKNS_18SecurityOriginDataE
-__ZN7WebCore15DatabaseTracker7originsERN3WTF6VectorINS_18SecurityOriginDataELm0EEE
+__ZN7WebCore15DatabaseTracker22databaseNamesForOriginEPNS_14SecurityOriginERN3WTF6VectorINS_6StringELm0EEE
+__ZN7WebCore15DatabaseTracker23detailsForNameAndOriginERKNS_6StringEPNS_14SecurityOriginE
+__ZN7WebCore15DatabaseTracker25deleteDatabasesWithOriginEPNS_14SecurityOriginE
+__ZN7WebCore15DatabaseTracker7originsERN3WTF6VectorINS1_6RefPtrINS_14SecurityOriginEEELm0EEE
__ZN7WebCore15DatabaseTracker7trackerEv
-__ZN7WebCore15DatabaseTracker8setQuotaERKNS_18SecurityOriginDataEy
+__ZN7WebCore15DatabaseTracker8setQuotaEPNS_14SecurityOriginEy
__ZN7WebCore15DatabaseTracker9setClientEPNS_21DatabaseTrackerClientE
__ZN7WebCore15FocusController15setFocusedFrameEN3WTF10PassRefPtrINS_5FrameEEE
__ZN7WebCore15FocusController15setInitialFocusENS_14FocusDirectionEPNS_13KeyboardEventE
__ZN7WebCore16NavigationActionC1Ev
__ZN7WebCore16colorFromNSColorEP7NSColor
__ZN7WebCore18PlatformMouseEventC1EP7NSEvent
-__ZN7WebCore18SecurityOriginDataC1ERKNS_6StringES3_t
__ZN7WebCore19CSSStyleDeclaration11setPropertyERKNS_6StringES3_Ri
__ZN7WebCore19InspectorController11showConsoleEv
__ZN7WebCore19InspectorController12attachWindowEv
platform/ScrollBar.cpp \
# platform/SearchPopupMenu.cpp \
platform/SecurityOrigin.cpp \
- platform/SecurityOriginData.cpp \
platform/text/SegmentedString.cpp \
platform/SharedBuffer.cpp \
platform/text/String.cpp \
RelativePath="..\platform\SecurityOrigin.h"\r
>\r
</File>\r
- <File\r
- RelativePath="..\platform\SecurityOriginData.cpp"\r
- >\r
- </File>\r
- <File\r
- RelativePath="..\platform\SecurityOriginData.h"\r
- >\r
- </File>\r
<File\r
RelativePath="..\platform\SharedBuffer.cpp"\r
>\r
4E19592E0A39DACC00220FE5 /* MediaQueryExp.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959280A39DACC00220FE5 /* MediaQueryExp.h */; };
510184690B08602A004A825F /* CachedPage.h in Headers */ = {isa = PBXBuildFile; fileRef = 510184670B08602A004A825F /* CachedPage.h */; settings = {ATTRIBUTES = (Private, ); }; };
5101846A0B08602A004A825F /* CachedPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510184680B08602A004A825F /* CachedPage.cpp */; };
- 51079DD50CED2A820077247D /* SecurityOriginData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51079DD40CED2A820077247D /* SecurityOriginData.cpp */; };
5116D9770CF177BD00C2B84D /* DatabaseDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 5116D9750CF177BD00C2B84D /* DatabaseDetails.h */; settings = {ATTRIBUTES = (Private, ); }; };
5126E6BB0A2E3B12005C29FA /* IconDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5126E6B90A2E3B12005C29FA /* IconDatabase.cpp */; };
5126E6BC0A2E3B12005C29FA /* IconDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5126E6BA0A2E3B12005C29FA /* IconDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 512F2F450CEC3516006537E3 /* SecurityOriginData.h in Headers */ = {isa = PBXBuildFile; fileRef = 512F2F440CEC3516006537E3 /* SecurityOriginData.h */; settings = {ATTRIBUTES = (Private, ); }; };
513F14530AB634C400094DDF /* IconLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 513F14510AB634C400094DDF /* IconLoader.cpp */; };
513F14540AB634C400094DDF /* IconLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 513F14520AB634C400094DDF /* IconLoader.h */; };
514185EE0CD65F0400763C99 /* ChangeVersionWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 514185EC0CD65F0400763C99 /* ChangeVersionWrapper.h */; };
4E1959280A39DACC00220FE5 /* MediaQueryExp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaQueryExp.h; sourceTree = "<group>"; };
510184670B08602A004A825F /* CachedPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedPage.h; sourceTree = "<group>"; };
510184680B08602A004A825F /* CachedPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedPage.cpp; sourceTree = "<group>"; };
- 51079DD40CED2A820077247D /* SecurityOriginData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecurityOriginData.cpp; sourceTree = "<group>"; };
5116D9750CF177BD00C2B84D /* DatabaseDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseDetails.h; sourceTree = "<group>"; };
5126E6B90A2E3B12005C29FA /* IconDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IconDatabase.cpp; sourceTree = "<group>"; };
5126E6BA0A2E3B12005C29FA /* IconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IconDatabase.h; sourceTree = "<group>"; };
- 512F2F440CEC3516006537E3 /* SecurityOriginData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecurityOriginData.h; sourceTree = "<group>"; };
513F14510AB634C400094DDF /* IconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IconLoader.cpp; sourceTree = "<group>"; };
513F14520AB634C400094DDF /* IconLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IconLoader.h; sourceTree = "<group>"; };
514185EC0CD65F0400763C99 /* ChangeVersionWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChangeVersionWrapper.h; sourceTree = "<group>"; };
AB7170880B3118080017123E /* SearchPopupMenu.h */,
BC014C720CC5579D009C4B20 /* SecurityOrigin.cpp */,
BC014C730CC5579D009C4B20 /* SecurityOrigin.h */,
- 51079DD40CED2A820077247D /* SecurityOriginData.cpp */,
- 512F2F440CEC3516006537E3 /* SecurityOriginData.h */,
1A4A954B0B4EDCCB002D8C3C /* SharedBuffer.cpp */,
1A4A954C0B4EDCCB002D8C3C /* SharedBuffer.h */,
93309EA0099EB78C0056E581 /* SharedTimer.h */,
BC6D6E2609AF943500F59759 /* ScrollView.h in Headers */,
AB7170890B3118080017123E /* SearchPopupMenu.h in Headers */,
BC014C750CC5579D009C4B20 /* SecurityOrigin.h in Headers */,
- 512F2F450CEC3516006537E3 /* SecurityOriginData.h in Headers */,
B2C3DA2F0D006C1D00EF6F26 /* SegmentedString.h in Headers */,
93309E0C099E64920056E581 /* Selection.h in Headers */,
93309E0E099E64920056E581 /* SelectionController.h in Headers */,
9353676B09AED88B00D35CD6 /* ScrollViewMac.mm in Sources */,
AB7170A00B31193B0017123E /* SearchPopupMenuMac.mm in Sources */,
BC014C740CC5579D009C4B20 /* SecurityOrigin.cpp in Sources */,
- 51079DD50CED2A820077247D /* SecurityOriginData.cpp in Sources */,
B2C3DA2E0D006C1D00EF6F26 /* SegmentedString.cpp in Sources */,
93309E0B099E64920056E581 /* Selection.cpp in Sources */,
93309E0D099E64920056E581 /* SelectionController.cpp in Sources */,
platform/text/RegularExpression.cpp
platform/ScrollBar.cpp
platform/SecurityOrigin.cpp
- platform/SecurityOriginData.cpp
platform/text/SegmentedString.cpp
platform/SharedBuffer.cpp
platform/text/String.cpp
DOMWindow* window = impl();
DOMWindow* source = static_cast<JSDOMWindow*>(exec->dynamicGlobalObject())->impl();
- String domain = source->document()->securityOrigin()->domain();
+ String domain = source->document()->securityOrigin()->host();
String uri = source->document()->documentURI();
String message = args[0]->toString(exec);
String Document::domain() const
{
- return m_securityOrigin->domain();
+ return m_securityOrigin->host();
}
void Document::setDomain(const String& newDomain)
#include "WindowFeatures.h"
#include "kjs_window.h"
#include "PausedTimeouts.h"
+#include "SecurityOrigin.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
m_client->print(frame);
}
-unsigned long long Chrome::requestQuotaIncreaseForNewDatabase(Frame* frame, const SecurityOriginData& origin, const String& databaseDisplayName, unsigned long long estimatedSize)
+unsigned long long Chrome::requestQuotaIncreaseForNewDatabase(Frame* frame, SecurityOrigin* origin, const String& databaseDisplayName, unsigned long long estimatedSize)
{
return m_client->requestQuotaIncreaseForNewDatabase(frame, origin, databaseDisplayName, estimatedSize);
}
-unsigned long long Chrome::requestQuotaIncreaseForDatabaseOperation(Frame* frame, const SecurityOriginData& origin, const String& databaseIdentifier, unsigned long long proposedNewQuota)
+unsigned long long Chrome::requestQuotaIncreaseForDatabaseOperation(Frame* frame, SecurityOrigin* origin, const String& databaseIdentifier, unsigned long long proposedNewQuota)
{
return m_client->requestQuotaIncreaseForDatabaseOperation(frame, origin, databaseIdentifier, proposedNewQuota);
}
class HitTestResult;
class IntRect;
class Page;
- class SecurityOriginData;
+ class SecurityOrigin;
class String;
struct FrameLoadRequest;
void print(Frame*);
- unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData& origin, const String& databaseDisplayName, unsigned long long estimatedSize);
- unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData& origin, const String& databaseIdentifier, unsigned long long proposedNewQuota);
+ unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String& databaseDisplayName, unsigned long long estimatedSize);
+ unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin* origin, const String& databaseIdentifier, unsigned long long proposedNewQuota);
#if PLATFORM(MAC)
void focusNSView(NSView*);
class HitTestResult;
class IntRect;
class Page;
- class SecurityOriginData;
+ class SecurityOrigin;
class String;
struct FrameLoadRequest;
virtual void print(Frame*) = 0;
- virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData& origin, const String& databaseDisplayName, unsigned long long estimatedSize) = 0;
- virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData& origin, const String& databaseIdentifier, unsigned long long proposedNewQuota) = 0;
+ virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin* origin, const String& databaseDisplayName, unsigned long long estimatedSize) = 0;
+ virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin* origin, const String& databaseIdentifier, unsigned long long proposedNewQuota) = 0;
};
}
#include "FrameTree.h"
#include "KURL.h"
#include "PlatformString.h"
-#include "SecurityOriginData.h"
namespace WebCore {
return create(url.protocol(), url.host(), url.port(), ownerFrameOrigin);
}
+PassRefPtr<SecurityOrigin> SecurityOrigin::copy()
+{
+ return create(m_protocol.copy(), m_host.copy(), m_port, 0);
+}
+
+
void SecurityOrigin::setDomainFromDOM(const String& newDomain)
{
m_domainWasSetInDOM = true;
return m_protocol + ":" + m_host + ":" + String::number(m_port);
}
-SecurityOriginData SecurityOrigin::securityOriginData() const
+static const char SeparatorCharacter = '_';
+
+PassRefPtr<SecurityOrigin> SecurityOrigin::createFromIdentifier(const String& stringIdentifier)
+{
+ // Make sure there's a first separator
+ int separator1 = stringIdentifier.find(SeparatorCharacter);
+ if (separator1 == -1)
+ return create("", "", 0, 0);
+
+ // Make sure there's a second separator
+ int separator2 = stringIdentifier.find(SeparatorCharacter, separator1 + 1);
+ if (separator2 == -1)
+ return create("", "", 0, 0);
+
+ // Make sure there's not a third separator
+ if (stringIdentifier.reverseFind(SeparatorCharacter) != separator2)
+ return create("", "", 0, 0);
+
+ // Make sure the port section is a valid port number or doesn't exist
+ bool portOkay;
+ int port = stringIdentifier.right(stringIdentifier.length() - separator2 - 1).toInt(&portOkay);
+ if (!portOkay && separator2 + 1 == static_cast<int>(stringIdentifier.length()))
+ return create("", "", 0, 0);
+
+ if (port < 0 || port > 65535)
+ return create("", "", 0, 0);
+
+ // Split out the 3 sections of data
+ String protocol = stringIdentifier.substring(0, separator1);
+ String host = stringIdentifier.substring(separator1 + 1, separator2 - separator1 - 1);
+ return create(protocol, host, port, 0);
+}
+
+
+String SecurityOrigin::stringIdentifier() const
{
- return SecurityOriginData(m_protocol, m_host, m_port);
+ static String separatorString = String(&SeparatorCharacter, 1);
+ return m_protocol + separatorString + m_host + separatorString + String::number(m_port);
}
} // namespace WebCore
class Frame;
class KURL;
- class SecurityOriginData;
class SecurityOrigin : public RefCounted<SecurityOrigin> {
public:
static PassRefPtr<SecurityOrigin> createForFrame(Frame*);
+ static PassRefPtr<SecurityOrigin> createFromIdentifier(const String&);
static PassRefPtr<SecurityOrigin> create(const String& protocol, const String& host, unsigned short port, SecurityOrigin* ownerFrameOrigin);
- void setDomainFromDOM(const String& newDomain);
- String domain() const { return m_host; }
+ PassRefPtr<SecurityOrigin> copy();
+ void setDomainFromDOM(const String& newDomain);
+ String host() const { return m_host; }
+ String protocol() const { return m_protocol; }
+ unsigned short port() const { return m_port; }
+
bool canAccess(const SecurityOrigin*) const;
bool isSecureTransitionTo(const KURL&) const;
bool isEmpty() const;
String toString() const;
- SecurityOriginData securityOriginData() const;
+ String stringIdentifier() const;
+
+ // do not use this for access checks, it's there only for using this as a hashtable key
+ bool equal(SecurityOrigin* other) const { return m_protocol == other->m_protocol && m_host == other->m_host && m_port == other->m_port; }
private:
SecurityOrigin(const String& protocol, const String& host, unsigned short port);
+++ /dev/null
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "config.h"
-#include "SecurityOriginData.h"
-
-static const char SeparatorCharacter = '_';
-
-namespace WebCore {
-
-SecurityOriginData::SecurityOriginData()
- : m_port(0)
-{
-}
-
-SecurityOriginData::SecurityOriginData(const String& protocol, const String& host, unsigned short port)
- : m_protocol(protocol)
- , m_host(host)
- , m_port(port)
-{
-}
-
-SecurityOriginData::SecurityOriginData(const String& stringIdentifier)
- : m_port(0)
-{
- // Make sure there's a first separator
- int separator1 = stringIdentifier.find(SeparatorCharacter);
- if (separator1 == -1)
- return;
-
- // Make sure there's a second separator
- int separator2 = stringIdentifier.find(SeparatorCharacter, separator1 + 1);
- if (separator2 == -1)
- return;
-
- // Make sure there's not a third separator
- if (stringIdentifier.reverseFind(SeparatorCharacter) != separator2)
- return;
-
- // Make sure the port section is a valid port number or doesn't exist
- bool portOkay;
- int port = stringIdentifier.right(stringIdentifier.length() - separator2 - 1).toInt(&portOkay);
- if (!portOkay && separator2 + 1 == static_cast<int>(stringIdentifier.length()))
- return;
-
- if (port < 0 || port > 65535)
- return;
-
- // Split out the 3 sections of data
- m_protocol = stringIdentifier.substring(0, separator1);
- m_host = stringIdentifier.substring(separator1 + 1, separator2 - separator1 - 1);
- m_port = port;
-}
-
-SecurityOriginData SecurityOriginData::copy() const
-{
- return SecurityOriginData(m_protocol.copy(), m_host.copy(), m_port);
-}
-
-String SecurityOriginData::stringIdentifier() const
-{
- static String separatorString = String(&SeparatorCharacter, 1);
- return m_protocol + separatorString + m_host + separatorString + String::number(m_port);
-}
-
-} // namespace WebCore
+++ /dev/null
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef SecurityOriginData_h
-#define SecurityOriginData_h
-
-#include "PlatformString.h"
-
-namespace WebCore {
-
-class SecurityOriginData {
-public:
- SecurityOriginData();
- SecurityOriginData(const String& protocol, const String& host, unsigned short port);
- SecurityOriginData(const String& stringIdentifier);
-
- const String& protocol() const { return m_protocol; }
- const String& host() const { return m_host; }
- unsigned short port() const { return m_port; }
-
- // Needed to make a deep copy of the object for thread safety when crossing a thread boundary
- SecurityOriginData copy() const;
-
- String stringIdentifier() const;
-private:
- String m_protocol;
- String m_host;
- unsigned short m_port;
-};
-
-inline bool operator==(const SecurityOriginData& a, const SecurityOriginData& b) { return a.protocol() == b.protocol() && a.host() == b.host() && a.port() == b.port(); }
-inline bool operator!=(const SecurityOriginData& a, const SecurityOriginData& b) { return !(a == b); }
-
-} // namespace WebCore
-
-#endif // SecurityOriginData_h
#include "Logging.h"
#include "NotImplemented.h"
#include "Page.h"
-#include "SecurityOriginData.h"
#include "SQLiteDatabase.h"
#include "SQLiteStatement.h"
#include "SQLResultSet.h"
return 0;
}
- DatabaseTracker::tracker().setDatabaseDetails(document->securityOrigin()->securityOriginData(), name, displayName, estimatedSize);
+ DatabaseTracker::tracker().setDatabaseDetails(document->securityOrigin(), name, displayName, estimatedSize);
document->setHasOpenDatabases();
m_databaseThread = document->databaseThread();
ASSERT(m_databaseThread);
- m_filename = DatabaseTracker::tracker().fullPathForDatabase(m_securityOrigin->securityOriginData(), m_name);
+ m_filename = DatabaseTracker::tracker().fullPathForDatabase(m_securityOrigin.get(), m_name);
}
Database::~Database()
m_expectedVersion = version.copy();
}
-SecurityOriginData Database::securityOriginData() const
+PassRefPtr<SecurityOrigin> Database::securityOriginCopy() const
{
- // Return a deep copy for ref counting thread safety
- return m_securityOrigin->securityOriginData().copy();
+ return m_securityOrigin->copy();
}
String Database::stringIdentifier() const
class DatabaseAuthorizer;
class DatabaseThread;
class Document;
-class SecurityOriginData;
class SQLResultSet;
class SQLTransactionCallback;
class SQLTransactionErrorCallback;
Vector<String> tableNames();
Document* document() const { return m_document; }
- SecurityOriginData securityOriginData() const;
+ PassRefPtr<SecurityOrigin> securityOriginCopy() const;
String stringIdentifier() const;
bool getVersionFromDatabase(String&);
#include "Document.h"
#include "FileSystem.h"
#include "Page.h"
-#include "SecurityOriginData.h"
+#include "SecurityOrigin.h"
#include "SQLiteStatement.h"
namespace WebCore {
// HTML5 SQL Storage spec suggests 5MB as the default quota per origin
static const unsigned DefaultOriginQuota = 5242880;
-struct SecurityOriginDataHash {
- static unsigned hash(const SecurityOriginData& data)
+struct SecurityOriginHash {
+ static unsigned hash(RefPtr<SecurityOrigin> origin)
{
unsigned hashCodes[3] = {
- data.protocol().impl() ? data.protocol().impl()->hash() : 0,
- data.host().impl() ? data.host().impl()->hash() : 0,
- data.port()
+ origin->protocol().impl() ? origin->protocol().impl()->hash() : 0,
+ origin->host().impl() ? origin->host().impl()->hash() : 0,
+ origin->port()
};
return StringImpl::computeHash(reinterpret_cast<UChar*>(hashCodes), 3 * sizeof(unsigned) / sizeof(UChar));
}
- static bool equal(const SecurityOriginData& a, const SecurityOriginData& b)
+ static bool equal(RefPtr<SecurityOrigin> a, RefPtr<SecurityOrigin> b)
{
- return a == b;
+ if (a == 0 || b == 0)
+ return a == b;
+ return a->equal(b.get());
}
static const bool safeToCompareToEmptyOrDeleted = true;
};
-struct SecurityOriginDataTraits : WTF::GenericHashTraits<SecurityOriginData> {
- static const SecurityOriginData& deletedValue()
- {
+
+struct SecurityOriginTraits : WTF::GenericHashTraits<RefPtr<SecurityOrigin> > {
+ static const bool emptyValueIsZero = true;
+ static const RefPtr<SecurityOrigin>& deletedValue()
+ {
// Okay deleted value because file: protocols should always have port 0
- static SecurityOriginData key("file", "", 1);
- return key;
+ static const RefPtr<SecurityOrigin> securityOriginDeletedValue = SecurityOrigin::create("file", "", 1, 0);
+ return securityOriginDeletedValue;
}
- static const SecurityOriginData& emptyValue()
- {
- // Okay empty value because file: protocols should always have port 0
- static SecurityOriginData key("file", "", 2);
- return key;
+
+ static SecurityOrigin* emptyValue()
+ {
+ return 0;
}
};
bool DatabaseTracker::canEstablishDatabase(Document* document, const String& name, const String& displayName, unsigned long estimatedSize)
{
- SecurityOriginData originData = document->securityOrigin()->securityOriginData();
+ SecurityOrigin* origin = document->securityOrigin();
// If this origin has no databases yet, establish an entry in the tracker database with the default quota
- if (!hasEntryForOrigin(originData))
- establishEntryForOrigin(originData);
+ if (!hasEntryForOrigin(origin))
+ establishEntryForOrigin(origin);
// If a database already exists, you can always establish a handle to it
- if (hasEntryForDatabase(originData, name))
+ if (hasEntryForDatabase(origin, name))
return true;
// If the new database will fit as-is, allow its creation
- unsigned long long usage = usageForOrigin(originData);
- if (usage + estimatedSize < quotaForOrigin(originData))
+ unsigned long long usage = usageForOrigin(origin);
+ if (usage + estimatedSize < quotaForOrigin(origin))
return true;
// Otherwise, ask the UI Delegate for a new quota
return false;
// If no displayName was specified, pass the standard (required) name instead
- unsigned long long newQuota = page->chrome()->requestQuotaIncreaseForNewDatabase(document->frame(), originData, displayName.length() > 0 ? displayName : name, estimatedSize);
- setQuota(originData, newQuota);
+ unsigned long long newQuota = page->chrome()->requestQuotaIncreaseForNewDatabase(document->frame(), origin, displayName.length() > 0 ? displayName : name, estimatedSize);
+ setQuota(origin, newQuota);
return usage + estimatedSize <= newQuota;
}
-bool DatabaseTracker::hasEntryForOrigin(const SecurityOriginData& origin)
+bool DatabaseTracker::hasEntryForOrigin(SecurityOrigin* origin)
{
populateOrigins();
return m_originQuotaMap->contains(origin);
}
-bool DatabaseTracker::hasEntryForDatabase(const SecurityOriginData& origin, const String& databaseIdentifier)
+bool DatabaseTracker::hasEntryForDatabase(SecurityOrigin* origin, const String& databaseIdentifier)
{
SQLiteStatement statement(m_database, "SELECT guid FROM Databases WHERE origin=? AND name=?;");
if (statement.prepare() != SQLResultOk)
return false;
- statement.bindText(1, origin.stringIdentifier());
+ statement.bindText(1, origin->stringIdentifier());
statement.bindText(2, databaseIdentifier);
return statement.step() == SQLResultRow;
}
-void DatabaseTracker::establishEntryForOrigin(const SecurityOriginData& origin)
+void DatabaseTracker::establishEntryForOrigin(SecurityOrigin* origin)
{
ASSERT(!hasEntryForOrigin(origin));
SQLiteStatement statement(m_database, "INSERT INTO Origins VALUES (?, ?)");
if (statement.prepare() != SQLResultOk) {
- LOG_ERROR("Unable to establish origin %s in the tracker", origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to establish origin %s in the tracker", origin->stringIdentifier().ascii().data());
return;
}
- statement.bindText(1, origin.stringIdentifier());
+ statement.bindText(1, origin->stringIdentifier());
statement.bindInt64(2, m_defaultQuota);
if (statement.step() != SQLResultDone) {
- LOG_ERROR("Unable to establish origin %s in the tracker", origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to establish origin %s in the tracker", origin->stringIdentifier().ascii().data());
return;
}
m_client->dispatchDidModifyOrigin(origin);
}
-String DatabaseTracker::fullPathForDatabase(const SecurityOriginData& origin, const String& name, bool createIfNotExists)
+String DatabaseTracker::fullPathForDatabase(SecurityOrigin* origin, const String& name, bool createIfNotExists)
{
- String originIdentifier = origin.stringIdentifier();
+ String originIdentifier = origin->stringIdentifier();
String originPath = pathByAppendingComponent(m_databasePath, originIdentifier);
// Make sure the path for this SecurityOrigin exists
return "";
if (result != SQLResultDone) {
- LOG_ERROR("Failed to retrieve filename from Database Tracker for origin %s, name %s", origin.stringIdentifier().ascii().data(), name.ascii().data());
+ LOG_ERROR("Failed to retrieve filename from Database Tracker for origin %s, name %s", origin->stringIdentifier().ascii().data(), name.ascii().data());
return "";
}
statement.finalize();
if (m_originQuotaMap)
return;
- m_originQuotaMap.set(new HashMap<SecurityOriginData, unsigned long long, SecurityOriginDataHash, SecurityOriginDataTraits>);
+ m_originQuotaMap.set(new HashMap<RefPtr<SecurityOrigin>, unsigned long long, SecurityOriginHash, SecurityOriginTraits>);
if (!m_database.isOpen())
return;
return;
int result;
+ RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromIdentifier(statement.getColumnText16(0));
while ((result = statement.step()) == SQLResultRow)
- m_originQuotaMap->set(statement.getColumnText16(0), statement.getColumnInt64(1));
+ m_originQuotaMap->set(origin.get(), statement.getColumnInt64(1));
if (result != SQLResultDone)
LOG_ERROR("Failed to read in all origins from the database");
return;
}
-void DatabaseTracker::origins(Vector<SecurityOriginData>& result)
+void DatabaseTracker::origins(Vector<RefPtr<SecurityOrigin> >& result)
{
if (!m_originQuotaMap)
populateOrigins();
copyKeysToVector(*(m_originQuotaMap.get()), result);
}
-bool DatabaseTracker::databaseNamesForOrigin(const SecurityOriginData& origin, Vector<String>& resultVector)
+bool DatabaseTracker::databaseNamesForOrigin(SecurityOrigin* origin, Vector<String>& resultVector)
{
if (!m_database.isOpen())
return false;
if (statement.prepare() != SQLResultOk)
return false;
- statement.bindText(1, origin.stringIdentifier());
+ statement.bindText(1, origin->stringIdentifier());
int result;
while ((result = statement.step()) == SQLResultRow)
resultVector.append(statement.getColumnText16(0));
if (result != SQLResultDone) {
- LOG_ERROR("Failed to retrieve all database names for origin %s", origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Failed to retrieve all database names for origin %s", origin->stringIdentifier().ascii().data());
return false;
}
return true;
}
-DatabaseDetails DatabaseTracker::detailsForNameAndOrigin(const String& name, const SecurityOriginData& origin)
+DatabaseDetails DatabaseTracker::detailsForNameAndOrigin(const String& name, SecurityOrigin* origin)
{
- String originIdentifier = origin.stringIdentifier();
+ String originIdentifier = origin->stringIdentifier();
SQLiteStatement statement(m_database, "SELECT displayName, estimatedSize FROM Databases WHERE origin=? AND name=?");
if (statement.prepare() != SQLResultOk)
return DatabaseDetails(name, statement.getColumnText(0), statement.getColumnInt64(1), usageForDatabase(name, origin));
}
-void DatabaseTracker::setDatabaseDetails(const SecurityOriginData& origin, const String& name, const String& displayName, unsigned long estimatedSize)
+void DatabaseTracker::setDatabaseDetails(SecurityOrigin* origin, const String& name, const String& displayName, unsigned long estimatedSize)
{
- String originIdentifier = origin.stringIdentifier();
+ String originIdentifier = origin->stringIdentifier();
int64_t guid = 0;
SQLiteStatement statement(m_database, "SELECT guid FROM Databases WHERE origin=? AND name=?");
m_client->dispatchDidModifyDatabase(origin, name);
}
-unsigned long long DatabaseTracker::usageForDatabase(const String& name, const SecurityOriginData& origin)
+unsigned long long DatabaseTracker::usageForDatabase(const String& name, SecurityOrigin* origin)
{
String path = fullPathForDatabase(origin, name, false);
if (path.isEmpty())
return fileSize(path, size) ? size : 0;
}
-unsigned long long DatabaseTracker::usageForOrigin(const SecurityOriginData& origin)
+unsigned long long DatabaseTracker::usageForOrigin(SecurityOrigin* origin)
{
Vector<String> names;
databaseNamesForOrigin(origin, names);
return result;
}
-unsigned long long DatabaseTracker::quotaForOrigin(const SecurityOriginData& origin)
+unsigned long long DatabaseTracker::quotaForOrigin(SecurityOrigin* origin)
{
populateOrigins();
return m_originQuotaMap->get(origin);
}
-void DatabaseTracker::setQuota(const SecurityOriginData& origin, unsigned long long quota)
+void DatabaseTracker::setQuota(SecurityOrigin* origin, unsigned long long quota)
{
populateOrigins();
if (!m_originQuotaMap->contains(origin))
bool error = statement.prepare() != SQLResultOk;
if (!error) {
statement.bindInt64(1, quota);
- statement.bindText(2, origin.stringIdentifier());
+ statement.bindText(2, origin->stringIdentifier());
error = !statement.executeCommand();
}
if (error)
- LOG_ERROR("Failed to set quota %llu in tracker database for origin %s", quota, origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Failed to set quota %llu in tracker database for origin %s", quota, origin->stringIdentifier().ascii().data());
if (m_client)
m_client->dispatchDidModifyOrigin(origin);
}
-bool DatabaseTracker::addDatabase(const SecurityOriginData& origin, const String& name, const String& path)
+bool DatabaseTracker::addDatabase(SecurityOrigin* origin, const String& name, const String& path)
{
if (!m_database.isOpen())
return false;
if (statement.prepare() != SQLResultOk)
return false;
- statement.bindText(1, origin.stringIdentifier());
+ statement.bindText(1, origin->stringIdentifier());
statement.bindText(2, name);
statement.bindText(3, path);
if (!statement.executeCommand()) {
- LOG_ERROR("Failed to add database %s to origin %s: %s\n", name.ascii().data(), origin.stringIdentifier().ascii().data(), statement.lastErrorMsg());
+ LOG_ERROR("Failed to add database %s to origin %s: %s\n", name.ascii().data(), origin->stringIdentifier().ascii().data(), statement.lastErrorMsg());
return false;
}
{
populateOrigins();
- HashMap<SecurityOriginData, unsigned long long, SecurityOriginDataHash, SecurityOriginDataTraits>::const_iterator iter = m_originQuotaMap->begin();
- HashMap<SecurityOriginData, unsigned long long, SecurityOriginDataHash, SecurityOriginDataTraits>::const_iterator end = m_originQuotaMap->end();
+ HashMap<RefPtr<SecurityOrigin>, unsigned long long, SecurityOriginHash, SecurityOriginTraits>::const_iterator iter = m_originQuotaMap->begin();
+ HashMap<RefPtr<SecurityOrigin>, unsigned long long, SecurityOriginHash, SecurityOriginTraits>::const_iterator end = m_originQuotaMap->end();
for (; iter != end; ++iter)
- deleteDatabasesWithOrigin(iter->first);
+ deleteDatabasesWithOrigin(iter->first.get());
}
-void DatabaseTracker::deleteDatabasesWithOrigin(const SecurityOriginData& origin)
+void DatabaseTracker::deleteDatabasesWithOrigin(SecurityOrigin* origin)
{
Vector<String> databaseNames;
if (!databaseNamesForOrigin(origin, databaseNames)) {
- LOG_ERROR("Unable to retrieve list of database names for origin %s", origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to retrieve list of database names for origin %s", origin->stringIdentifier().ascii().data());
return;
}
for (unsigned i = 0; i < databaseNames.size(); ++i) {
if (!deleteDatabaseFile(origin, databaseNames[i])) {
- LOG_ERROR("Unable to delete file for database %s in origin %s", databaseNames[i].ascii().data(), origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to delete file for database %s in origin %s", databaseNames[i].ascii().data(), origin->stringIdentifier().ascii().data());
return;
}
}
SQLiteStatement statement(m_database, "DELETE FROM Databases WHERE origin=?");
if (statement.prepare() != SQLResultOk) {
- LOG_ERROR("Unable to prepare deletion of databases from origin %s from tracker", origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to prepare deletion of databases from origin %s from tracker", origin->stringIdentifier().ascii().data());
return;
}
- statement.bindText(1, origin.stringIdentifier());
+ statement.bindText(1, origin->stringIdentifier());
if (!statement.executeCommand()) {
- LOG_ERROR("Unable to execute deletion of databases from origin %s from tracker", origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to execute deletion of databases from origin %s from tracker", origin->stringIdentifier().ascii().data());
return;
}
}
}
-void DatabaseTracker::deleteDatabase(const SecurityOriginData& origin, const String& name)
+void DatabaseTracker::deleteDatabase(SecurityOrigin* origin, const String& name)
{
if (!deleteDatabaseFile(origin, name)) {
- LOG_ERROR("Unable to delete file for database %s in origin %s", name.ascii().data(), origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to delete file for database %s in origin %s", name.ascii().data(), origin->stringIdentifier().ascii().data());
return;
}
SQLiteStatement statement(m_database, "DELETE FROM Databases WHERE origin=? AND name=?");
if (statement.prepare() != SQLResultOk) {
- LOG_ERROR("Unable to prepare deletion of database %s from origin %s from tracker", name.ascii().data(), origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to prepare deletion of database %s from origin %s from tracker", name.ascii().data(), origin->stringIdentifier().ascii().data());
return;
}
- statement.bindText(1, origin.stringIdentifier());
+ statement.bindText(1, origin->stringIdentifier());
statement.bindText(2, name);
if (!statement.executeCommand()) {
- LOG_ERROR("Unable to execute deletion of database %s from origin %s from tracker", name.ascii().data(), origin.stringIdentifier().ascii().data());
+ LOG_ERROR("Unable to execute deletion of database %s from origin %s from tracker", name.ascii().data(), origin->stringIdentifier().ascii().data());
return;
}
}
}
-bool DatabaseTracker::deleteDatabaseFile(const SecurityOriginData& origin, const String& name)
+bool DatabaseTracker::deleteDatabaseFile(SecurityOrigin* origin, const String& name)
{
String fullPath = fullPathForDatabase(origin, name, false);
if (fullPath.isEmpty())
return mutex;
}
-static Vector<pair<SecurityOriginData, String> >& notificationQueue()
+static Vector<pair<SecurityOrigin*, String> >& notificationQueue()
{
- static Vector<pair<SecurityOriginData, String> > queue;
+ static Vector<pair<SecurityOrigin*, String> > queue;
return queue;
}
-void DatabaseTracker::scheduleNotifyDatabaseChanged(const SecurityOriginData& origin, const String& name)
+void DatabaseTracker::scheduleNotifyDatabaseChanged(SecurityOrigin* origin, const String& name)
{
MutexLocker locker(notificationMutex());
- notificationQueue().append(pair<SecurityOriginData, String>(origin.copy(), name.copy()));
+ notificationQueue().append(pair<SecurityOrigin*, String>(origin, name.copy()));
scheduleForNotification();
}
// mechanism to inclue which tracker the notification goes out on, as well
DatabaseTracker& theTracker(tracker());
- Vector<pair<SecurityOriginData, String> > notifications;
+ Vector<pair<SecurityOrigin*, String> > notifications;
{
MutexLocker locker(notificationMutex());
class DatabaseTrackerClient;
class Document;
-class SecurityOriginData;
+class SecurityOrigin;
-struct SecurityOriginDataHash;
-struct SecurityOriginDataTraits;
+struct SecurityOriginHash;
+struct SecurityOriginTraits;
class DatabaseTracker {
public:
void setDatabasePath(const String&);
const String& databasePath();
- bool canEstablishDatabase(Document* document, const String& name, const String& displayName, unsigned long estimatedSize);
- void setDatabaseDetails(const SecurityOriginData& origin, const String& name, const String& displayName, unsigned long estimatedSize);
- String fullPathForDatabase(const SecurityOriginData& origin, const String& name, bool createIfNotExists = true);
+ bool canEstablishDatabase(Document*, const String& name, const String& displayName, unsigned long estimatedSize);
+ void setDatabaseDetails(SecurityOrigin*, const String& name, const String& displayName, unsigned long estimatedSize);
+ String fullPathForDatabase(SecurityOrigin*, const String& name, bool createIfNotExists = true);
- void origins(Vector<SecurityOriginData>& result);
- bool databaseNamesForOrigin(const SecurityOriginData& origin, Vector<String>& result);
+ void origins(Vector<RefPtr<SecurityOrigin> >& result);
+ bool databaseNamesForOrigin(SecurityOrigin*, Vector<String>& result);
- DatabaseDetails detailsForNameAndOrigin(const String&, const SecurityOriginData&);
+ DatabaseDetails detailsForNameAndOrigin(const String&, SecurityOrigin*);
- unsigned long long usageForDatabase(const String&, const SecurityOriginData&);
- unsigned long long usageForOrigin(const SecurityOriginData&);
- unsigned long long quotaForOrigin(const SecurityOriginData&);
- void setQuota(const SecurityOriginData&, unsigned long long);
+ unsigned long long usageForDatabase(const String&, SecurityOrigin*);
+ unsigned long long usageForOrigin(SecurityOrigin*);
+ unsigned long long quotaForOrigin(SecurityOrigin*);
+ void setQuota(SecurityOrigin*, unsigned long long);
void deleteAllDatabases();
- void deleteDatabasesWithOrigin(const SecurityOriginData& origin);
- void deleteDatabase(const SecurityOriginData& origin, const String& name);
+ void deleteDatabasesWithOrigin(SecurityOrigin*);
+ void deleteDatabase(SecurityOrigin*, const String& name);
void setClient(DatabaseTrackerClient*);
unsigned long long defaultOriginQuota() const;
// From a secondary thread, must be thread safe with its data
- void scheduleNotifyDatabaseChanged(const SecurityOriginData&, const String& name);
+ void scheduleNotifyDatabaseChanged(SecurityOrigin*, const String& name);
static DatabaseTracker& tracker();
private:
void openTrackerDatabase();
- bool hasEntryForOrigin(const SecurityOriginData&);
- bool hasEntryForDatabase(const SecurityOriginData&, const String& databaseIdentifier);
- void establishEntryForOrigin(const SecurityOriginData&);
+ bool hasEntryForOrigin(SecurityOrigin*);
+ bool hasEntryForDatabase(SecurityOrigin*, const String& databaseIdentifier);
+ void establishEntryForOrigin(SecurityOrigin*);
- bool addDatabase(const SecurityOriginData& origin, const String& name, const String& path);
+ bool addDatabase(SecurityOrigin*, const String& name, const String& path);
void populateOrigins();
- bool deleteDatabaseFile(const SecurityOriginData& origin, const String& name);
+ bool deleteDatabaseFile(SecurityOrigin*, const String& name);
SQLiteDatabase m_database;
- mutable OwnPtr<HashMap<SecurityOriginData, unsigned long long, SecurityOriginDataHash, SecurityOriginDataTraits> > m_originQuotaMap;
+ mutable OwnPtr<HashMap<RefPtr<SecurityOrigin>, unsigned long long, SecurityOriginHash, SecurityOriginTraits> > m_originQuotaMap;
String m_databasePath;
namespace WebCore {
-class SecurityOriginData;
+class SecurityOrigin;
class String;
class DatabaseTrackerClient {
public:
virtual ~DatabaseTrackerClient() { }
- virtual void dispatchDidModifyOrigin(const SecurityOriginData&) = 0;
- virtual void dispatchDidModifyDatabase(const SecurityOriginData&, const String& databaseName) = 0;
+ virtual void dispatchDidModifyOrigin(SecurityOrigin*) = 0;
+ virtual void dispatchDidModifyDatabase(SecurityOrigin*, const String& databaseName) = 0;
};
} // namespace WebCore
#include "Logging.h"
#include "Page.h"
#include "PlatformString.h"
-#include "SecurityOriginData.h"
+#include "SecurityOrigin.h"
#include "SQLError.h"
#include "SQLiteTransaction.h"
#include "SQLResultSet.h"
// An efficient way to track the size of individual databases in an origin will need to be developed
// before we can know
// <rdar://problem/5628468> tracks this task
- m_database->m_sqliteDatabase.setMaximumSize(DatabaseTracker::tracker().quotaForOrigin(m_database->securityOriginData()));
+ m_database->m_sqliteDatabase.setMaximumSize(DatabaseTracker::tracker().quotaForOrigin(m_database->securityOriginCopy().get()));
ASSERT(!m_sqliteTransaction);
m_sqliteTransaction.set(new SQLiteTransaction(m_database->m_sqliteDatabase));
// See ::openTransactionAndPreflight() for discussion
// Reset the maximum size here, as it was increased to allow us to retry this statement
- m_database->m_sqliteDatabase.setMaximumSize(DatabaseTracker::tracker().quotaForOrigin(m_database->securityOriginData()));
+ m_database->m_sqliteDatabase.setMaximumSize(DatabaseTracker::tracker().quotaForOrigin(m_database->securityOriginCopy().get()));
} else {
// If the current statement has already been run, failed due to quota constraints, and we're not retrying it,
// that means it ended in an error. Handle it now
Page* page = m_database->document()->page();
ASSERT(page);
- SecurityOriginData originData = m_database->securityOriginData();
+ RefPtr<SecurityOrigin> origin = m_database->securityOriginCopy();
- unsigned long long currentQuota = DatabaseTracker::tracker().quotaForOrigin(originData);
- unsigned long long newQuota = page->chrome()->requestQuotaIncreaseForDatabaseOperation(m_database->document()->frame(), originData, m_database->stringIdentifier(), currentQuota + DefaultQuotaSizeIncrease);
+ unsigned long long currentQuota = DatabaseTracker::tracker().quotaForOrigin(origin.get());
+ unsigned long long newQuota = page->chrome()->requestQuotaIncreaseForDatabaseOperation(m_database->document()->frame(), origin.get(), m_database->stringIdentifier(), currentQuota + DefaultQuotaSizeIncrease);
- DatabaseTracker::tracker().setQuota(originData, newQuota);
+ DatabaseTracker::tracker().setQuota(origin.get(), newQuota);
// If the new quota ended up being larger than the old quota, we will retry the statement.
if (newQuota > currentQuota)
// The commit was successful, notify the delegates if the transaction modified this database
if (m_modifiedDatabase)
- DatabaseTracker::tracker().scheduleNotifyDatabaseChanged(m_database->m_securityOrigin->securityOriginData(), m_database->m_name);
+ DatabaseTracker::tracker().scheduleNotifyDatabaseChanged(m_database->m_securityOrigin.get(), m_database->m_name);
// Transaction Step 10 - End transaction steps
// There is no next step
m_sqliteTransaction->rollback();
} else if (m_modifiedDatabase) {
// But if the commit was successful, notify the delegates if the transaction modified this database
- DatabaseTracker::tracker().scheduleNotifyDatabaseChanged(m_database->m_securityOrigin->securityOriginData(), m_database->m_name);
+ DatabaseTracker::tracker().scheduleNotifyDatabaseChanged(m_database->m_securityOrigin.get(), m_database->m_name);
}
m_sqliteTransaction.clear();
virtual void print(Frame*) { }
- virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData&, const String&, unsigned long long) { return 0; }
- virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData&, const String&, unsigned long long) { return 0; }
+ virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String&, unsigned long long) { return 0; }
+ virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin*, const String&, unsigned long long) { return 0; }
};
class SVGEmptyFrameLoaderClient : public FrameLoaderClient {
+2008-01-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam.
+
+ - remove SecurityOriginData and fold its functionality into SecurityOrigin
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::requestQuotaIncreaseForNewDatabase):
+ (WebKit::ChromeClient::requestQuotaIncreaseForDatabaseOperation):
+ * WebCoreSupport/ChromeClientGtk.h:
+
2008-01-09 Luca Bruno <lethalman88@gmail.com>
Reviewed by Alp Toker.
webkit_web_frame_print(kit(frame));
}
-unsigned long long ChromeClient::requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData&, const String&, unsigned long long)
+unsigned long long ChromeClient::requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String&, unsigned long long)
{
notImplemented();
return 0;
}
-unsigned long long ChromeClient::requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData&, const String&, unsigned long long)
+unsigned long long ChromeClient::requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin*, const String&, unsigned long long)
{
notImplemented();
return 0;
virtual void print(WebCore::Frame*);
- virtual unsigned long long requestQuotaIncreaseForNewDatabase(WebCore::Frame*, const WebCore::SecurityOriginData&, const WebCore::String&, unsigned long long);
- virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(WebCore::Frame*, const WebCore::SecurityOriginData&, const WebCore::String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForNewDatabase(WebCore::Frame*, WebCore::SecurityOrigin*, const WebCore::String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(WebCore::Frame*, WebCore::SecurityOrigin*, const WebCore::String&, unsigned long long);
private:
WebKitWebView* m_webView;
+2008-01-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam.
+
+ - remove SecurityOriginData and fold its functionality into SecurityOrigin
+
+ * Storage/WebDatabaseManager.mm:
+ (-[WebDatabaseManager origins]):
+ (-[WebDatabaseManager databasesWithOrigin:]):
+ (-[WebDatabaseManager detailsForDatabase:withOrigin:]):
+ (-[WebDatabaseManager deleteDatabasesWithOrigin:]):
+ (-[WebDatabaseManager deleteDatabase:withOrigin:]):
+ * Storage/WebDatabaseTrackerClient.h:
+ * Storage/WebDatabaseTrackerClient.mm:
+ (WebDatabaseTrackerClient::dispatchDidModifyOrigin):
+ (WebDatabaseTrackerClient::dispatchDidModifyDatabase):
+ * Storage/WebSecurityOrigin.mm:
+ (-[WebSecurityOrigin initWithProtocol:domain:port:]):
+ (-[WebSecurityOrigin protocol]):
+ (-[WebSecurityOrigin domain]):
+ (-[WebSecurityOrigin port]):
+ (-[WebSecurityOrigin usage]):
+ (-[WebSecurityOrigin quota]):
+ (-[WebSecurityOrigin setQuota:]):
+ (-[WebSecurityOrigin isEqual:]):
+ (-[WebSecurityOrigin dealloc]):
+ (-[WebSecurityOrigin finalize]):
+ (-[WebSecurityOrigin _initWithWebCoreSecurityOrigin:]):
+ (-[WebSecurityOrigin _core]):
+ * Storage/WebSecurityOriginInternal.h:
+ * WebCoreSupport/WebChromeClient.h:
+ * WebCoreSupport/WebChromeClient.mm:
+ (WebChromeClient::requestQuotaIncreaseForNewDatabase):
+ (WebChromeClient::requestQuotaIncreaseForDatabaseOperation):
+
2008-01-10 Sam Weinig <sam@webkit.org>
Reviewed by Anders Carlsson.
- (NSArray *)origins
{
- Vector<WebCoreSecurityOriginData> coreOrigins;
+ Vector<RefPtr<SecurityOrigin> > coreOrigins;
DatabaseTracker::tracker().origins(coreOrigins);
NSMutableArray *webOrigins = [[NSMutableArray alloc] initWithCapacity:coreOrigins.size()];
for (unsigned i = 0; i < coreOrigins.size(); ++i) {
- WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOriginData:&coreOrigins[i]];
+ WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:coreOrigins[i].get()];
[webOrigins addObject:webOrigin];
[webOrigin release];
}
- (NSArray *)databasesWithOrigin:(WebSecurityOrigin *)origin
{
Vector<String> nameVector;
- if (!DatabaseTracker::tracker().databaseNamesForOrigin(*[origin _core], nameVector))
+ if (!DatabaseTracker::tracker().databaseNamesForOrigin([origin _core], nameVector))
return nil;
NSMutableArray *names = [[NSMutableArray alloc] initWithCapacity:nameVector.size()];
{
static id keys[3] = {WebDatabaseDisplayNameKey, WebDatabaseExpectedSizeKey, WebDatabaseUsageKey};
- DatabaseDetails details = DatabaseTracker::tracker().detailsForNameAndOrigin(databaseIdentifier, *[origin _core]);
+ DatabaseDetails details = DatabaseTracker::tracker().detailsForNameAndOrigin(databaseIdentifier, [origin _core]);
if (!details.isValid())
return nil;
- (void)deleteDatabasesWithOrigin:(WebSecurityOrigin *)origin
{
- DatabaseTracker::tracker().deleteDatabasesWithOrigin(*[origin _core]);
+ DatabaseTracker::tracker().deleteDatabasesWithOrigin([origin _core]);
}
- (void)deleteDatabase:(NSString *)databaseIdentifier withOrigin:(WebSecurityOrigin *)origin
{
- DatabaseTracker::tracker().deleteDatabase(*[origin _core], databaseIdentifier);
+ DatabaseTracker::tracker().deleteDatabase([origin _core], databaseIdentifier);
}
@end
*/
#import <WebCore/DatabaseTrackerClient.h>
-#import <WebCore/SecurityOriginData.h>
class WebDatabaseTrackerClient : public WebCore::DatabaseTrackerClient {
public:
static WebDatabaseTrackerClient* sharedWebDatabaseTrackerClient();
virtual ~WebDatabaseTrackerClient();
- virtual void dispatchDidModifyOrigin(const WebCore::SecurityOriginData&);
- virtual void dispatchDidModifyDatabase(const WebCore::SecurityOriginData&, const WebCore::String& databaseIdentifier);
+ virtual void dispatchDidModifyOrigin(WebCore::SecurityOrigin*);
+ virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const WebCore::String& databaseIdentifier);
private:
WebDatabaseTrackerClient();
};
#import "WebSecurityOriginPrivate.h"
#import "WebSecurityOriginInternal.h"
#import <wtf/RetainPtr.h>
+#import <WebCore/SecurityOrigin.h>
using namespace WebCore;
{
}
-void WebDatabaseTrackerClient::dispatchDidModifyOrigin(const SecurityOriginData& origin)
+void WebDatabaseTrackerClient::dispatchDidModifyOrigin(SecurityOrigin* origin)
{
- RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOriginData:&origin]);
+ RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
[[NSNotificationCenter defaultCenter] postNotificationName:WebDatabaseDidModifyOriginNotification
object:webSecurityOrigin.get()];
}
-void WebDatabaseTrackerClient::dispatchDidModifyDatabase(const SecurityOriginData& origin, const String& databaseIdentifier)
+void WebDatabaseTrackerClient::dispatchDidModifyDatabase(SecurityOrigin* origin, const String& databaseIdentifier)
{
- RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOriginData:&origin]);
+ RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
RetainPtr<NSDictionary> userInfo(AdoptNS, [[NSDictionary alloc]
initWithObjectsAndKeys:(NSString *)databaseIdentifier, WebDatabaseIdentifierKey, nil]);
#import "WebSecurityOriginInternal.h"
#import <WebCore/DatabaseTracker.h>
-#import <WebCore/SecurityOriginData.h>
+#import <WebCore/SecurityOrigin.h>
using namespace WebCore;
if (!self)
return nil;
- WebCoreSecurityOriginData *originData = new WebCoreSecurityOriginData(protocol, domain, port);
- _private = reinterpret_cast<WebSecurityOriginPrivate*>(originData);
+ RefPtr<SecurityOrigin> origin = SecurityOrigin::create(protocol, domain, port, 0);
+ origin->ref();
+ _private = reinterpret_cast<WebSecurityOriginPrivate*>(origin.get());
return self;
}
- (NSString*)protocol
{
- return reinterpret_cast<WebCoreSecurityOriginData*>(_private)->protocol();
+ return reinterpret_cast<SecurityOrigin*>(_private)->protocol();
}
- (NSString*)domain
{
- return reinterpret_cast<WebCoreSecurityOriginData*>(_private)->host();
+ return reinterpret_cast<SecurityOrigin*>(_private)->host();
}
- (unsigned short)port
{
- return reinterpret_cast<WebCoreSecurityOriginData*>(_private)->port();
+ return reinterpret_cast<SecurityOrigin*>(_private)->port();
}
- (unsigned long long)usage
{
- return DatabaseTracker::tracker().usageForOrigin(*reinterpret_cast<WebCoreSecurityOriginData*>(_private));
+ return DatabaseTracker::tracker().usageForOrigin(reinterpret_cast<SecurityOrigin*>(_private));
}
- (unsigned long long)quota
{
- return DatabaseTracker::tracker().quotaForOrigin(*reinterpret_cast<WebCoreSecurityOriginData*>(_private));
+ return DatabaseTracker::tracker().quotaForOrigin(reinterpret_cast<SecurityOrigin*>(_private));
}
// Sets the storage quota (in bytes)
// This will simply prevent new data from being added to databases in that origin
- (void)setQuota:(unsigned long long)quota
{
- DatabaseTracker::tracker().setQuota(*reinterpret_cast<WebCoreSecurityOriginData*>(_private), quota);
+ DatabaseTracker::tracker().setQuota(reinterpret_cast<SecurityOrigin*>(_private), quota);
}
- (BOOL)isEqual:(id)anObject
return NO;
}
- return *[self _core] == *[anObject _core];
+ return [self _core]->equal([anObject _core]);
}
- (void)dealloc
{
- delete reinterpret_cast<WebCoreSecurityOriginData*>(_private);
+ if (_private)
+ reinterpret_cast<SecurityOrigin*>(_private)->deref();
[super dealloc];
}
- (void)finalize
{
- delete reinterpret_cast<WebCoreSecurityOriginData*>(_private);
+ if (_private)
+ reinterpret_cast<SecurityOrigin*>(_private)->deref();
[super finalize];
}
@implementation WebSecurityOrigin (WebInternal)
-- (id)_initWithWebCoreSecurityOriginData:(const WebCoreSecurityOriginData *)securityOriginData
+- (id)_initWithWebCoreSecurityOrigin:(SecurityOrigin*)origin
{
- ASSERT(securityOriginData);
+ ASSERT(origin);
self = [super init];
if (!self)
return nil;
- WebCoreSecurityOriginData *originData = new WebCoreSecurityOriginData(*securityOriginData);
- _private = reinterpret_cast<WebSecurityOriginPrivate*>(originData);
+ origin->ref();
+ _private = reinterpret_cast<WebSecurityOriginPrivate*>(origin);
return self;
}
-- (WebCoreSecurityOriginData *)_core
+- (SecurityOrigin *)_core
{
- return reinterpret_cast<WebCoreSecurityOriginData*>(_private);
+ return reinterpret_cast<SecurityOrigin*>(_private);
}
@end
*/
namespace WebCore {
- class SecurityOriginData;
+ class SecurityOrigin;
}
-typedef WebCore::SecurityOriginData WebCoreSecurityOriginData;
+typedef WebCore::SecurityOrigin WebCoreSecurityOrigin;
@interface WebSecurityOrigin (WebInternal)
-- (id)_initWithWebCoreSecurityOriginData:(const WebCoreSecurityOriginData *)securityOriginData;
-- (WebCoreSecurityOriginData *)_core;
+- (id)_initWithWebCoreSecurityOrigin:(WebCoreSecurityOrigin *)origin;
+- (WebCoreSecurityOrigin *)_core;
@end
virtual void print(WebCore::Frame*);
- virtual unsigned long long requestQuotaIncreaseForNewDatabase(WebCore::Frame*, const WebCore::SecurityOriginData& origin, const WebCore::String& databaseDisplayName, unsigned long long estimatedSize);
- virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(WebCore::Frame*, const WebCore::SecurityOriginData& origin, const WebCore::String& databaseIdentifier, unsigned long long proposedNewQuota);
+ virtual unsigned long long requestQuotaIncreaseForNewDatabase(WebCore::Frame*, WebCore::SecurityOrigin* origin, const WebCore::String& databaseDisplayName, unsigned long long estimatedSize);
+ virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(WebCore::Frame*, WebCore::SecurityOrigin* origin, const WebCore::String& databaseIdentifier, unsigned long long proposedNewQuota);
private:
WebView *m_webView;
CallUIDelegate(m_webView, @selector(webView:printFrameView:), frameView);
}
-unsigned long long WebChromeClient::requestQuotaIncreaseForNewDatabase(WebCore::Frame* frame, const WebCore::SecurityOriginData& origin, const WebCore::String& databaseDisplayName, unsigned long long estimatedSize)
+unsigned long long WebChromeClient::requestQuotaIncreaseForNewDatabase(WebCore::Frame* frame, WebCore::SecurityOrigin* origin, const WebCore::String& databaseDisplayName, unsigned long long estimatedSize)
{
- WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOriginData:reinterpret_cast<const WebCoreSecurityOriginData*>(&origin)];
+ WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin];
unsigned long long result = CallUIDelegateReturningUnsignedLongLong(m_webView, @selector(webView:frame:quotaForSecurityOrigin:toCreateDatabase:withEstimatedSize:), kit(frame), webOrigin, (NSString *)databaseDisplayName, estimatedSize);
[webOrigin release];
return result;
}
-unsigned long long WebChromeClient::requestQuotaIncreaseForDatabaseOperation(WebCore::Frame* frame, const WebCore::SecurityOriginData& origin, const WebCore::String& databaseIdentifier, unsigned long long proposedNewQuota)
+unsigned long long WebChromeClient::requestQuotaIncreaseForDatabaseOperation(WebCore::Frame* frame, WebCore::SecurityOrigin* origin, const WebCore::String& databaseIdentifier, unsigned long long proposedNewQuota)
{
- WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOriginData:reinterpret_cast<const WebCoreSecurityOriginData*>(&origin)];
+ WebSecurityOrigin *webOrigin = [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin];
unsigned long long result = CallUIDelegateReturningUnsignedLongLong(m_webView, @selector(webView:frame:quotaForSecurityOrigin:fromProposedQuota:database:), kit(frame), webOrigin, proposedNewQuota, (NSString *)databaseIdentifier);
[webOrigin release];
return result;
+2008-01-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam.
+
+ - remove SecurityOriginData and fold its functionality into SecurityOrigin
+
+ * WebCoreSupport/ChromeClientQt.cpp:
+ (WebCore::ChromeClientQt::requestQuotaIncreaseForNewDatabase):
+ (WebCore::ChromeClientQt::requestQuotaIncreaseForDatabaseOperation):
+ * WebCoreSupport/ChromeClientQt.h:
+
2008-01-10 Lars Knoll <lars@trolltech.com>
Reviewed by Simon.
notImplemented();
}
-unsigned long long ChromeClientQt::requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData&, const String&, unsigned long long)
+unsigned long long ChromeClientQt::requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String&, unsigned long long)
{
notImplemented();
return 0;
}
-unsigned long long ChromeClientQt::requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData&, const String&, unsigned long long)
+unsigned long long ChromeClientQt::requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin*, const String&, unsigned long long)
{
notImplemented();
return 0;
virtual void print(Frame*);
- virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData&, const String&, unsigned long long);
- virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData&, const String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin*, const String&, unsigned long long);
QWebPage* m_webPage;
};
+2008-01-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam.
+
+ - remove SecurityOriginData and fold its functionality into SecurityOrigin
+
+ * WebChromeClient.cpp:
+ (WebChromeClient::requestQuotaIncreaseForNewDatabase):
+ (WebChromeClient::requestQuotaIncreaseForDatabaseOperation):
+ * WebChromeClient.h:
+ * WebDatabaseManager.cpp:
+ (WebDatabaseManager::origins):
+ (WebDatabaseManager::databasesWithOrigin):
+ (WebDatabaseManager::detailsForDatabaseWithOrigin):
+ (WebDatabaseManager::deleteDatabasesWithOrigin):
+ (WebDatabaseManager::deleteDatabaseWithOrigin):
+ (WebDatabaseManager::dispatchDidModifyOrigin):
+ (WebDatabaseManager::dispatchDidModifyDatabase):
+ * WebDatabaseManager.h:
+ * WebSecurityOrigin.cpp:
+ (WebSecurityOrigin::createInstance):
+ (WebSecurityOrigin::WebSecurityOrigin):
+ (WebSecurityOrigin::protocol):
+ (WebSecurityOrigin::domain):
+ (WebSecurityOrigin::port):
+ (WebSecurityOrigin::usage):
+ (WebSecurityOrigin::quota):
+ (WebSecurityOrigin::setQuota):
+ * WebSecurityOrigin.h:
+
2008-01-10 David Kilzer <ddkilzer@apple.com>
dftables should be rewritten as a script
uiDelegate2->printFrame(m_webView, kit(frame));
}
-unsigned long long WebChromeClient::requestQuotaIncreaseForNewDatabase(Frame* frame, const SecurityOriginData& originData, const String& databaseDisplayName, unsigned long long estimatedSize)
+unsigned long long WebChromeClient::requestQuotaIncreaseForNewDatabase(Frame* frame, SecurityOrigin* origin, const String& databaseDisplayName, unsigned long long estimatedSize)
{
- COMPtr<WebSecurityOrigin> webOrigin(AdoptCOM, WebSecurityOrigin::createInstance(originData));
+ COMPtr<WebSecurityOrigin> webOrigin(AdoptCOM, WebSecurityOrigin::createInstance(origin));
unsigned long long result = 0;
COMPtr<IWebUIDelegate> uiDelegate;
if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) {
return result;
}
-unsigned long long WebChromeClient::requestQuotaIncreaseForDatabaseOperation(Frame* frame, const SecurityOriginData& originData, const String& databaseIdentifier, unsigned long long proposedNewQuota)
+unsigned long long WebChromeClient::requestQuotaIncreaseForDatabaseOperation(Frame* frame, SecurityOrigin* origin, const String& databaseIdentifier, unsigned long long proposedNewQuota)
{
- COMPtr<WebSecurityOrigin> webOrigin(AdoptCOM, WebSecurityOrigin::createInstance(originData));
+ COMPtr<WebSecurityOrigin> webOrigin(AdoptCOM, WebSecurityOrigin::createInstance(origin));
unsigned long long result = 0;
COMPtr<IWebUIDelegate> uiDelegate;
if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) {
virtual void print(WebCore::Frame*);
- virtual unsigned long long requestQuotaIncreaseForNewDatabase(WebCore::Frame*, const WebCore::SecurityOriginData&, const WebCore::String&, unsigned long long);
- virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(WebCore::Frame*, const WebCore::SecurityOriginData&, const WebCore::String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForNewDatabase(WebCore::Frame*, WebCore::SecurityOrigin*, const WebCore::String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(WebCore::Frame*, WebCore::SecurityOrigin*, const WebCore::String&, unsigned long long);
virtual WebView* webView() const { return m_webView; }
#include <WebCore/COMPtr.h>\r
#include <WebCore/DatabaseTracker.h>\r
#include <WebCore/FileSystem.h>\r
-#include <WebCore/SecurityOriginData.h>\r
+#include <WebCore/SecurityOrigin.h>\r
\r
using namespace WebCore;\r
\r
return newRef;\r
}\r
\r
-template<> struct COMVariantSetter<SecurityOriginData> : COMIUnknownVariantSetter<WebSecurityOrigin, SecurityOriginData> {};\r
+template<> struct COMVariantSetter<SecurityOrigin*> : COMIUnknownVariantSetter<WebSecurityOrigin, SecurityOrigin*> {};\r
\r
// IWebDatabaseManager -------------------------------------------------------------\r
HRESULT STDMETHODCALLTYPE WebDatabaseManager::sharedWebDatabaseManager( \r
if (this != s_sharedWebDatabaseManager)\r
return E_FAIL;\r
\r
- Vector<SecurityOriginData> origins;\r
+ Vector<RefPtr<SecurityOrigin> > origins;\r
DatabaseTracker::tracker().origins(origins);\r
- COMPtr<COMEnumVariant<Vector<SecurityOriginData> > > enumVariant(AdoptCOM, COMEnumVariant<Vector<SecurityOriginData> >::adopt(origins));\r
+ COMPtr<COMEnumVariant<Vector<RefPtr<SecurityOrigin> > > > enumVariant(AdoptCOM, COMEnumVariant<Vector<RefPtr<SecurityOrigin> > >::adopt(origins));\r
\r
*result = enumVariant.releaseRef();\r
return S_OK;\r
return E_FAIL;\r
\r
Vector<String> databaseNames;\r
- DatabaseTracker::tracker().databaseNamesForOrigin(webSecurityOrigin->securityOriginData(), databaseNames);\r
+ DatabaseTracker::tracker().databaseNamesForOrigin(webSecurityOrigin->securityOrigi(), databaseNames);\r
\r
COMPtr<COMEnumVariant<Vector<String> > > enumVariant(AdoptCOM, COMEnumVariant<Vector<String> >::adopt(databaseNames));\r
\r
return E_FAIL;\r
\r
DatabaseDetails details = DatabaseTracker::tracker().detailsForNameAndOrigin(String(databaseName, SysStringLen(databaseName)),\r
- webSecurityOrigin->securityOriginData());\r
+ webSecurityOrigin->securityOrigin());\r
\r
if (!details.isValid())\r
return E_INVALIDARG;\r
if (!webSecurityOrigin)\r
return E_FAIL;\r
\r
- DatabaseTracker::tracker().deleteDatabasesWithOrigin(webSecurityOrigin->securityOriginData());\r
+ DatabaseTracker::tracker().deleteDatabasesWithOrigin(webSecurityOrigin->securityOrigin());\r
\r
return S_OK;\r
}\r
if (!webSecurityOrigin)\r
return E_FAIL;\r
\r
- DatabaseTracker::tracker().deleteDatabase(webSecurityOrigin->securityOriginData(), String(databaseName, SysStringLen(databaseName)));\r
+ DatabaseTracker::tracker().deleteDatabase(webSecurityOrigin->securityOrigin(), String(databaseName, SysStringLen(databaseName)));\r
\r
return S_OK;\r
}\r
\r
-void WebDatabaseManager::dispatchDidModifyOrigin(const SecurityOriginData& origin)
+void WebDatabaseManager::dispatchDidModifyOrigin(SecurityOrigin* origin)
{
static BSTR databaseDidModifyOriginName = SysAllocString(WebDatabaseDidModifyOriginNotification);
IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
notifyCenter->postNotificationName(databaseDidModifyOriginName, securityOrigin.get(), 0);
}
-void WebDatabaseManager::dispatchDidModifyDatabase(const SecurityOriginData& origin, const String& databaseName)
+void WebDatabaseManager::dispatchDidModifyDatabase(SecurityOrigin* origin, const String& databaseName)
{
static BSTR databaseDidModifyOriginName = SysAllocString(WebDatabaseDidModifyDatabaseNotification);
IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
/* [in] */ IWebSecurityOrigin* origin);\r
\r
// DatabaseTrackerClient\r
- virtual void dispatchDidModifyOrigin(const WebCore::SecurityOriginData&);
- virtual void dispatchDidModifyDatabase(const WebCore::SecurityOriginData&, const WebCore::String& databaseName);
+ virtual void dispatchDidModifyOrigin(WebCore::SecurityOrigin*);
+ virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const WebCore::String& databaseName);
\r
private:\r
WebDatabaseManager();\r
using namespace WebCore;\r
\r
// WebSecurityOrigin ---------------------------------------------------------------\r
-WebSecurityOrigin* WebSecurityOrigin::createInstance(const SecurityOriginData& securityOriginData)\r
+WebSecurityOrigin* WebSecurityOrigin::createInstance(SecurityOrigin* securityOrigin)\r
{\r
- WebSecurityOrigin* origin = new WebSecurityOrigin(securityOriginData);\r
+ WebSecurityOrigin* origin = new WebSecurityOrigin(securityOrigin);\r
origin->AddRef();\r
return origin;\r
}\r
\r
-WebSecurityOrigin::WebSecurityOrigin(const SecurityOriginData& securityOriginData)\r
+WebSecurityOrigin::WebSecurityOrigin(SecurityOrigin* securityOrigin)\r
: m_refCount(0)\r
- , m_securityOriginData(securityOriginData)\r
+ , m_securityOrigin(securityOrigin)\r
{\r
gClassCount++;\r
}\r
if (!result)\r
return E_POINTER;\r
\r
- *result = BString(m_securityOriginData.protocol()).release();\r
+ *result = BString(m_securityOrigin->protocol()).release();\r
\r
return S_OK;\r
}\r
if (!result)\r
return E_POINTER;\r
\r
- *result = BString(m_securityOriginData.host()).release();\r
+ *result = BString(m_securityOrigin->host()).release();\r
\r
return S_OK;\r
}\r
if (!result)\r
return E_POINTER;\r
\r
- *result = m_securityOriginData.port();\r
+ *result = m_securityOrigin->port();\r
\r
return S_OK;\r
}\r
if (!result)\r
return E_POINTER;\r
\r
- *result = DatabaseTracker::tracker().usageForOrigin(m_securityOriginData);\r
+ *result = DatabaseTracker::tracker().usageForOrigin(m_securityOrigin.get());\r
\r
return S_OK;\r
}\r
if (!result)\r
return E_POINTER;\r
\r
- *result = DatabaseTracker::tracker().quotaForOrigin(m_securityOriginData);\r
+ *result = DatabaseTracker::tracker().quotaForOrigin(m_securityOrigin.get());\r
return S_OK;\r
}\r
\r
HRESULT STDMETHODCALLTYPE WebSecurityOrigin::setQuota( \r
/* [in] */ unsigned long long quota) \r
{\r
- DatabaseTracker::tracker().setQuota(m_securityOriginData, quota);\r
+ DatabaseTracker::tracker().setQuota(m_securityOrigin.get(), quota);\r
\r
return S_OK;\r
}\r
#define WebSecurityOrigin_h\r
\r
#include "IWebSecurityOrigin.h"\r
-#include <WebCore/SecurityOriginData.h>\r
+#include <WebCore/SecurityOrigin.h>\r
\r
class DECLSPEC_UUID("6EB8D98F-2723-4472-88D3-5936F9D6E631") WebSecurityOrigin : public IWebSecurityOrigin {\r
public:\r
// WebSecurityOrigin\r
- static WebSecurityOrigin* createInstance(const WebCore::SecurityOriginData& securityOriginData);\r
- const WebCore::SecurityOriginData& securityOriginData() const { return m_securityOriginData; }\r
+ static WebSecurityOrigin* createInstance(WebCore::SecurityOrigin* origin);\r
+ const WebCore::SecurityOrigin* securityOrigin() const { return m_securityOrigin.get(); }\r
\r
// IUnknown\r
virtual HRESULT STDMETHODCALLTYPE QueryInterface( \r
virtual HRESULT STDMETHODCALLTYPE setQuota( \r
/* [in] */ unsigned long long quota);\r
private:\r
- WebSecurityOrigin(const WebCore::SecurityOriginData&);\r
+ WebSecurityOrigin(WebCore::SecurityOrigin*);\r
~WebSecurityOrigin();\r
\r
ULONG m_refCount;\r
- WebCore::SecurityOriginData m_securityOriginData;\r
+ RefPtr<WebCore::SecurityOrigin> m_securityOrigin;\r
};\r
\r
#endif // WebSecurityOrigin_h\r
+2008-01-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam.
+
+ - remove SecurityOriginData and fold its functionality into SecurityOrigin
+
+ * WebKitSupport/ChromeClientWx.cpp:
+ (WebCore::ChromeClientWx::requestQuotaIncreaseForNewDatabase):
+ (WebCore::ChromeClientWx::requestQuotaIncreaseForDatabaseOperation):
+ * WebKitSupport/ChromeClientWx.h:
+
2007-12-16 Darin Adler <darin@apple.com>
- try to fix the build
notImplemented();
}
-unsigned long long ChromeClientWx::requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData&, const String&, unsigned long long)
+unsigned long long ChromeClientWx::requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String&, unsigned long long)
{
notImplemented();
return 0;
}
-unsigned long long ChromeClientWx::requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData&, const String&, unsigned long long)
+unsigned long long ChromeClientWx::requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin*, const String&, unsigned long long)
{
notImplemented();
return 0;
virtual void print(Frame*);
- virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, const SecurityOriginData&, const String&, unsigned long long);
- virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, const SecurityOriginData&, const String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String&, unsigned long long);
+ virtual unsigned long long requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin*, const String&, unsigned long long);
};
}