Changeset 78321 in webkit


Ignore:
Timestamp:
Feb 11, 2011 12:37:36 AM (13 years ago)
Author:
abarth@webkit.org
Message:

2011-02-10 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

WebKit should have a cryptographic RNG
https://bugs.webkit.org/show_bug.cgi?id=22049

Test crypto.getRandomValues API. It's pretty hard to write a
deterministic API for a randomized API, but this test should catch some
regressions.

  • security/crypto-random-values-expected.txt: Added.
  • security/crypto-random-values.html: Added.

2011-02-10 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

WebKit should have a cryptographic RNG
https://bugs.webkit.org/show_bug.cgi?id=22049

Teach JavaScriptCore how to export this function.

2011-02-10 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

WebKit should have a cryptographic RNG
https://bugs.webkit.org/show_bug.cgi?id=22049

Add crypto.getRandomValues. Yes, all these diffs are required to
expose a single function to the DOM.

Test: security/crypto-random-values.html

  • Android.mk:
  • CMakeLists.txt:
  • DerivedSources.cpp:
  • DerivedSources.make:
  • ForwardingHeaders/wtf/CryptographicallyRandomNumber.h: Added.
  • GNUmakefile.am:
  • WebCore.gypi:
  • WebCore.pri:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/v8/custom/V8DOMWindowCustom.cpp:
  • config.h:
  • page/Crypto.cpp: Added. (WebCore::Crypto::Crypto): (WebCore::Crypto::getRandomValues):
  • page/Crypto.h: Added. (WebCore::Crypto::create):
  • page/Crypto.idl: Added.
  • page/DOMWindow.cpp: (WebCore::DOMWindow::clear): (WebCore::DOMWindow::crypto):
  • page/DOMWindow.h: (WebCore::DOMWindow::optionalCrypto):
  • page/DOMWindow.idl:
Location:
trunk
Files:
6 added
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r78318 r78321  
     12011-02-10  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        WebKit should have a cryptographic RNG
     6        https://bugs.webkit.org/show_bug.cgi?id=22049
     7
     8        Test crypto.getRandomValues API.  It's pretty hard to write a
     9        deterministic API for a randomized API, but this test should catch some
     10        regressions.
     11
     12        * security/crypto-random-values-expected.txt: Added.
     13        * security/crypto-random-values.html: Added.
     14
    1152011-02-10  Maciej Stachowiak  <mjs@apple.com>
    216
  • trunk/Source/JavaScriptCore/ChangeLog

    r78312 r78321  
     12011-02-10  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        WebKit should have a cryptographic RNG
     6        https://bugs.webkit.org/show_bug.cgi?id=22049
     7
     8        Teach JavaScriptCore how to export this function.
     9
     10        * JavaScriptCore.exp:
     11        * JavaScriptCore.xcodeproj/project.pbxproj:
     12
    1132011-02-10  Geoffrey Garen  <ggaren@apple.com>
    214
  • trunk/Source/JavaScriptCore/JavaScriptCore.exp

    r78297 r78321  
    434434__ZN3WTF27releaseFastMallocFreeMemoryEv
    435435__ZN3WTF28setMainThreadCallbacksPausedEb
     436__ZN3WTF29cryptographicallyRandomValuesEPvm
    436437__ZN3WTF36lockAtomicallyInitializedStaticMutexEv
    437438__ZN3WTF37parseDateFromNullTerminatedCharactersEPKc
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r78211 r78321  
    337337                97941A5A13029ACC004A3447 /* OSRandomSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 97941A40130299DB004A3447 /* OSRandomSource.h */; };
    338338                97941A7E1302A098004A3447 /* CryptographicallyRandomNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97941A7C1302A098004A3447 /* CryptographicallyRandomNumber.cpp */; };
    339                 97941A7F1302A098004A3447 /* CryptographicallyRandomNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 97941A7D1302A098004A3447 /* CryptographicallyRandomNumber.h */; };
     339                97941A7F1302A098004A3447 /* CryptographicallyRandomNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 97941A7D1302A098004A3447 /* CryptographicallyRandomNumber.h */; settings = {ATTRIBUTES = (Private, ); }; };
    340340                A1712B3B11C7B212007A5315 /* RegExpCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1712B3A11C7B212007A5315 /* RegExpCache.cpp */; };
    341341                A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B3E11C7B228007A5315 /* RegExpCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
  • trunk/Source/WebCore/Android.mk

    r78194 r78321  
    410410        page/ContentSecurityPolicy.cpp \
    411411        page/ContextMenuController.cpp \
     412        page/Crypto.cpp \
    412413        page/DOMSelection.cpp \
    413414        page/DOMTimer.cpp \
  • trunk/Source/WebCore/CMakeLists.txt

    r78234 r78321  
    320320    page/Console.idl
    321321    page/Coordinates.idl
     322    page/Crypto.idl
    322323    page/DOMSelection.idl
    323324    page/DOMWindow.idl
     
    11111112    page/ContentSecurityPolicy.cpp
    11121113    page/ContextMenuController.cpp
     1114    page/Crypto.cpp
    11131115    page/DOMSelection.cpp
    11141116    page/DOMTimer.cpp
  • trunk/Source/WebCore/ChangeLog

    r78320 r78321  
     12011-02-10  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        WebKit should have a cryptographic RNG
     6        https://bugs.webkit.org/show_bug.cgi?id=22049
     7
     8        Add crypto.getRandomValues.  Yes, all these diffs are required to
     9        expose a single function to the DOM.
     10
     11        Test: security/crypto-random-values.html
     12
     13        * Android.mk:
     14        * CMakeLists.txt:
     15        * DerivedSources.cpp:
     16        * DerivedSources.make:
     17        * ForwardingHeaders/wtf/CryptographicallyRandomNumber.h: Added.
     18        * GNUmakefile.am:
     19        * WebCore.gypi:
     20        * WebCore.pri:
     21        * WebCore.pro:
     22        * WebCore.vcproj/WebCore.vcproj:
     23        * WebCore.xcodeproj/project.pbxproj:
     24        * bindings/js/JSDOMWindowCustom.cpp:
     25        * bindings/v8/custom/V8DOMWindowCustom.cpp:
     26        * config.h:
     27        * page/Crypto.cpp: Added.
     28        (WebCore::Crypto::Crypto):
     29        (WebCore::Crypto::getRandomValues):
     30        * page/Crypto.h: Added.
     31        (WebCore::Crypto::create):
     32        * page/Crypto.idl: Added.
     33        * page/DOMWindow.cpp:
     34        (WebCore::DOMWindow::clear):
     35        (WebCore::DOMWindow::crypto):
     36        * page/DOMWindow.h:
     37        (WebCore::DOMWindow::optionalCrypto):
     38        * page/DOMWindow.idl:
     39
    1402011-02-11  Ryuan Choi  <ryuan.choi@samsung.com>
    241
  • trunk/Source/WebCore/DerivedSources.cpp

    r76600 r78321  
    5151#include "JSCoordinates.cpp"
    5252#include "JSCounter.cpp"
     53#include "JSCrypto.cpp"
    5354#include "JSCSSCharsetRule.cpp"
    5455#include "JSCSSFontFaceRule.cpp"
  • trunk/Source/WebCore/DerivedSources.make

    r77389 r78321  
    128128    Coordinates \
    129129    Counter \
     130    Crypto \
    130131    CustomEvent \
    131132    DataGridColumn \
  • trunk/Source/WebCore/GNUmakefile.am

    r78234 r78321  
    163163        DerivedSources/WebCore/JSCounter.cpp \
    164164        DerivedSources/WebCore/JSCounter.h \
     165        DerivedSources/WebCore/JSCrypto.cpp \
     166        DerivedSources/WebCore/JSCrypto.h \
    165167        DerivedSources/WebCore/JSCSSCharsetRule.cpp \
    166168        DerivedSources/WebCore/JSCSSCharsetRule.h \
     
    21742176        Source/WebCore/page/BarInfo.cpp \
    21752177        Source/WebCore/page/BarInfo.h \
    2176         Source/WebCore/page/ChromeClient.h \
    21772178        Source/WebCore/page/Chrome.cpp \
    21782179        Source/WebCore/page/Chrome.h \
     2180        Source/WebCore/page/ChromeClient.h \
    21792181        Source/WebCore/page/Console.cpp \
    21802182        Source/WebCore/page/Console.h \
     
    21862188        Source/WebCore/page/ContextMenuProvider.h \
    21872189        Source/WebCore/page/Coordinates.h \
     2190        Source/WebCore/page/Crypto.cpp \
     2191        Source/WebCore/page/Crypto.h \
    21882192        Source/WebCore/page/DOMSelection.cpp \
    21892193        Source/WebCore/page/DOMSelection.h \
     
    22142218        Source/WebCore/page/Geolocation.h \
    22152219        Source/WebCore/page/GeolocationClient.h \
    2216         Source/WebCore/page/GeolocationError.h \
    22172220        Source/WebCore/page/GeolocationController.cpp \
    22182221        Source/WebCore/page/GeolocationController.h \
     2222        Source/WebCore/page/GeolocationError.h \
    22192223        Source/WebCore/page/GeolocationPosition.h \
    22202224        Source/WebCore/page/GeolocationPositionCache.cpp \
     
    22332237        Source/WebCore/page/MouseEventWithHitTestResults.cpp \
    22342238        Source/WebCore/page/MouseEventWithHitTestResults.h \
     2239        Source/WebCore/page/Navigator.cpp \
     2240        Source/WebCore/page/Navigator.h \
    22352241        Source/WebCore/page/NavigatorBase.cpp \
    22362242        Source/WebCore/page/NavigatorBase.h \
    2237         Source/WebCore/page/Navigator.cpp \
    2238         Source/WebCore/page/Navigator.h \
    22392243        Source/WebCore/page/OriginAccessEntry.cpp \
    22402244        Source/WebCore/page/OriginAccessEntry.h \
    22412245        Source/WebCore/page/Page.cpp \
     2246        Source/WebCore/page/Page.h \
    22422247        Source/WebCore/page/PageGroup.cpp \
    22432248        Source/WebCore/page/PageGroup.h \
    22442249        Source/WebCore/page/PageGroupLoadDeferrer.cpp \
    22452250        Source/WebCore/page/PageGroupLoadDeferrer.h \
    2246         Source/WebCore/page/Page.h \
    22472251        Source/WebCore/page/Performance.cpp \
    22482252        Source/WebCore/page/Performance.h \
     
    22512255        Source/WebCore/page/PerformanceTiming.cpp \
    22522256        Source/WebCore/page/PerformanceTiming.h \
    2253         Source/WebCore/page/PluginHalterClient.h \
    22542257        Source/WebCore/page/PluginHalter.cpp \
    22552258        Source/WebCore/page/PluginHalter.h \
     2259        Source/WebCore/page/PluginHalterClient.h \
    22562260        Source/WebCore/page/PositionCallback.h \
     2261        Source/WebCore/page/PositionError.h \
    22572262        Source/WebCore/page/PositionErrorCallback.h \
    2258         Source/WebCore/page/PositionError.h \
    22592263        Source/WebCore/page/PositionOptions.h \
    22602264        Source/WebCore/page/PrintContext.cpp \
  • trunk/Source/WebCore/WebCore.gypi

    r78234 r78321  
    246246            'page/Console.idl',
    247247            'page/Coordinates.idl',
     248            'page/Crypto.idl',
    248249            'page/DOMSelection.idl',
    249250            'page/DOMWindow.idl',
     
    22802281            'page/ContextMenuController.h',
    22812282            'page/ContextMenuProvider.h',
     2283            'page/Crypto.cpp',
     2284            'page/Crypto.h',
    22822285            'page/DOMSelection.cpp',
    22832286            'page/DOMSelection.h',
  • trunk/Source/WebCore/WebCore.pri

    r76496 r78321  
    309309    page/Console.idl \
    310310    page/Coordinates.idl \
     311    page/Crypto.idl \
    311312    page/DOMSelection.idl \
    312313    page/DOMWindow.idl \
  • trunk/Source/WebCore/WebCore.pro

    r78273 r78321  
    11291129    page/ContentSecurityPolicy.cpp \
    11301130    page/ContextMenuController.cpp \
     1131    page/Crypto.cpp \
    11311132    page/DOMSelection.cpp \
    11321133    page/DOMTimer.cpp \
    11331134    page/DOMWindow.cpp \
    1134     page/Navigator.cpp \
    1135     page/NavigatorBase.cpp \
    11361135    page/DragController.cpp \
    11371136    page/EventHandler.cpp \
     
    11491148    page/MemoryInfo.cpp \
    11501149    page/MouseEventWithHitTestResults.cpp \
     1150    page/Navigator.cpp \
     1151    page/NavigatorBase.cpp \
    11511152    page/OriginAccessEntry.cpp \
    11521153    page/Page.cpp \
     
    11581159    page/PluginHalter.cpp \
    11591160    page/PrintContext.cpp \
     1161    page/Screen.cpp \
    11601162    page/SecurityOrigin.cpp \
    1161     page/Screen.cpp \
    11621163    page/Settings.cpp \
    11631164    page/SpatialNavigation.cpp \
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r78234 r78321  
    17551755                        </File>
    17561756                        <File
     1757                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSCrypto.cpp"
     1758                                >
     1759                                <FileConfiguration
     1760                                        Name="Debug|Win32"
     1761                                        ExcludedFromBuild="true"
     1762                                        >
     1763                                        <Tool
     1764                                                Name="VCCLCompilerTool"
     1765                                        />
     1766                                </FileConfiguration>
     1767                                <FileConfiguration
     1768                                        Name="Release|Win32"
     1769                                        ExcludedFromBuild="true"
     1770                                        >
     1771                                        <Tool
     1772                                                Name="VCCLCompilerTool"
     1773                                        />
     1774                                </FileConfiguration>
     1775                                <FileConfiguration
     1776                                        Name="Debug_Cairo_CFLite|Win32"
     1777                                        ExcludedFromBuild="true"
     1778                                        >
     1779                                        <Tool
     1780                                                Name="VCCLCompilerTool"
     1781                                        />
     1782                                </FileConfiguration>
     1783                                <FileConfiguration
     1784                                        Name="Release_Cairo_CFLite|Win32"
     1785                                        ExcludedFromBuild="true"
     1786                                        >
     1787                                        <Tool
     1788                                                Name="VCCLCompilerTool"
     1789                                        />
     1790                                </FileConfiguration>
     1791                                <FileConfiguration
     1792                                        Name="Debug_All|Win32"
     1793                                        ExcludedFromBuild="true"
     1794                                        >
     1795                                        <Tool
     1796                                                Name="VCCLCompilerTool"
     1797                                        />
     1798                                </FileConfiguration>
     1799                                <FileConfiguration
     1800                                        Name="Release_LTCG|Win32"
     1801                                        ExcludedFromBuild="true"
     1802                                        >
     1803                                        <Tool
     1804                                                Name="VCCLCompilerTool"
     1805                                        />
     1806                                </FileConfiguration>
     1807                        </File>
     1808                        <File
     1809                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSCrypto.h"
     1810                                >
     1811                        </File>
     1812                        <File
    17571813                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSCSSCharsetRule.cpp"
    17581814                                >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r78234 r78321  
    30333033                973E325610883B7C005BC493 /* ResourceLoadNotifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */; };
    30343034                973E325710883B7C005BC493 /* ResourceLoadNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 973E325510883B7C005BC493 /* ResourceLoadNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
     3035                975CA28A130365F800E99AD9 /* Crypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975CA287130365F800E99AD9 /* Crypto.cpp */; };
     3036                975CA28B130365F800E99AD9 /* Crypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 975CA288130365F800E99AD9 /* Crypto.h */; };
     3037                975CA2A11303679D00E99AD9 /* JSCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 975CA29F1303679D00E99AD9 /* JSCrypto.cpp */; };
     3038                975CA2A21303679D00E99AD9 /* JSCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 975CA2A01303679D00E99AD9 /* JSCrypto.h */; };
    30353039                976D6C77122B8A3D001FD1F7 /* AsyncFileWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 976D6C58122B8A3D001FD1F7 /* AsyncFileWriter.h */; };
    30363040                976D6C78122B8A3D001FD1F7 /* Blob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 976D6C59122B8A3D001FD1F7 /* Blob.cpp */; };
     
    94179421                973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadNotifier.cpp; sourceTree = "<group>"; };
    94189422                973E325510883B7C005BC493 /* ResourceLoadNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadNotifier.h; sourceTree = "<group>"; };
     9423                975CA287130365F800E99AD9 /* Crypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Crypto.cpp; sourceTree = "<group>"; };
     9424                975CA288130365F800E99AD9 /* Crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Crypto.h; sourceTree = "<group>"; };
     9425                975CA289130365F800E99AD9 /* Crypto.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Crypto.idl; sourceTree = "<group>"; };
     9426                975CA29F1303679D00E99AD9 /* JSCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCrypto.cpp; sourceTree = "<group>"; };
     9427                975CA2A01303679D00E99AD9 /* JSCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCrypto.h; sourceTree = "<group>"; };
    94199428                976D6C58122B8A3D001FD1F7 /* AsyncFileWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncFileWriter.h; path = fileapi/AsyncFileWriter.h; sourceTree = "<group>"; };
    94209429                976D6C59122B8A3D001FD1F7 /* Blob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Blob.cpp; path = fileapi/Blob.cpp; sourceTree = "<group>"; };
     
    1395713966                                FE6FD4850F676E5700092873 /* Coordinates.h */,
    1395813967                                FE6FD4860F676E5700092873 /* Coordinates.idl */,
     13968                                975CA287130365F800E99AD9 /* Crypto.cpp */,
     13969                                975CA288130365F800E99AD9 /* Crypto.h */,
     13970                                975CA289130365F800E99AD9 /* Crypto.idl */,
    1395913971                                BC5A86810C33676000EEA649 /* DOMSelection.cpp */,
    1396013972                                BC5A86820C33676000EEA649 /* DOMSelection.h */,
     
    1803418046                                BC98543B0CD3D98B00069BC1 /* JSConsole.cpp */,
    1803518047                                BC98543C0CD3D98B00069BC1 /* JSConsole.h */,
     18048                                975CA29F1303679D00E99AD9 /* JSCrypto.cpp */,
     18049                                975CA2A01303679D00E99AD9 /* JSCrypto.h */,
    1803618050                                BC5A86B30C3367E800EEA649 /* JSDOMSelection.cpp */,
    1803718051                                BC5A86B40C3367E800EEA649 /* JSDOMSelection.h */,
     
    2244522459                                9343CB8212F25E510033C5EE /* TextCodecUTF8.h in Headers */,
    2244622460                                977E2E0F12F0FC9C00C13379 /* XSSFilter.h in Headers */,
     22461                                975CA28B130365F800E99AD9 /* Crypto.h in Headers */,
     22462                                975CA2A21303679D00E99AD9 /* JSCrypto.h in Headers */,
    2244722463                        );
    2244822464                        runOnlyForDeploymentPostprocessing = 0;
     
    2512825144                                977E2E0E12F0FC9C00C13379 /* XSSFilter.cpp in Sources */,
    2512925145                                0F29C16E1300C2E2002D794E /* AccessibilityAllInOne.cpp in Sources */,
     25146                                975CA28A130365F800E99AD9 /* Crypto.cpp in Sources */,
     25147                                975CA2A11303679D00E99AD9 /* JSCrypto.cpp in Sources */,
    2513025148                                A1E1154413015C3D0054AC8C /* DistantLightSource.cpp in Sources */,
    2513125149                                A1E1154613015C4E0054AC8C /* PointLightSource.cpp in Sources */,
  • trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp

    r77151 r78321  
    490490}
    491491
    492 JSValue JSDOMWindow::crypto(ExecState*) const
    493 {
    494     return jsUndefined();
    495 }
    496 
    497492JSValue JSDOMWindow::event(ExecState* exec) const
    498493{
  • trunk/Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp

    r74646 r78321  
    184184}
    185185
    186 v8::Handle<v8::Value> V8DOMWindow::cryptoAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
    187 {
    188     // FIXME: Implement me.
    189     return v8::Undefined();
    190 }
    191 
    192186void V8DOMWindow::locationAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info)
    193187{
  • trunk/Source/WebCore/config.h

    r75619 r78321  
    172172#endif
    173173
     174#if OS(DARWIN) || OS(UNIX) || OS(WINDOWS)
     175#define WTF_USE_OS_RANDOMNESS 1
     176#endif
     177
    174178#if PLATFORM(CHROMIUM)
    175179
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r77357 r78321  
    3838#include "Chrome.h"
    3939#include "Console.h"
     40#include "Crypto.h"
    4041#include "DOMApplicationCache.h"
    4142#include "DOMSelection.h"
     
    434435    m_history = 0;
    435436
     437    m_crypto = 0;
     438
    436439    if (m_locationbar)
    437440        m_locationbar->disconnectFrame();
     
    529532        m_history = History::create(m_frame);
    530533    return m_history.get();
     534}
     535
     536Crypto* DOMWindow::crypto() const
     537{
     538    if (!m_crypto)
     539        m_crypto = Crypto::create();
     540    return m_crypto.get();
    531541}
    532542
  • trunk/Source/WebCore/page/DOMWindow.h

    r76278 r78321  
    3838    class CSSStyleDeclaration;
    3939    class Console;
     40    class Crypto;
    4041    class DOMApplicationCache;
    4142    class DOMSelection;
     
    115116        Screen* screen() const;
    116117        History* history() const;
     118        Crypto* crypto() const;
    117119        BarInfo* locationbar() const;
    118120        BarInfo* menubar() const;
     
    341343        DOMSelection* optionalSelection() const { return m_selection.get(); }
    342344        History* optionalHistory() const { return m_history.get(); }
     345        Crypto* optionalCrypto() const { return m_crypto.get(); }
    343346        BarInfo* optionalLocationbar() const { return m_locationbar.get(); }
    344347        BarInfo* optionalMenubar() const { return m_menubar.get(); }
     
    442445        mutable RefPtr<DOMSelection> m_selection;
    443446        mutable RefPtr<History> m_history;
     447        mutable RefPtr<Crypto>  m_crypto;
    444448        mutable RefPtr<BarInfo> m_locationbar;
    445449        mutable RefPtr<BarInfo> m_menubar;
  • trunk/Source/WebCore/page/DOMWindow.idl

    r76600 r78321  
    5959        attribute [Replaceable, CustomGetter, V8CustomSetter] Event event;
    6060
    61         readonly attribute [Custom] Crypto crypto;
     61        readonly attribute Crypto crypto;
    6262
    6363        DOMSelection getSelection();
Note: See TracChangeset for help on using the changeset viewer.