diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-11 09:43:24 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-11 09:43:24 +0200 |
commit | 1b914638db989aaa98631a1c1e02c7b2d44805d8 (patch) | |
tree | 87f4fd2c7b38db320079a5de8877890d2ca3c485 /Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp | |
parent | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (diff) | |
download | qtwebkit-1b914638db989aaa98631a1c1e02c7b2d44805d8.tar.gz |
Imported WebKit commit 9a52e27980f47e8b0d8f8b7cc0fd7b5741bceb92 (http://svn.webkit.org/repository/webkit/trunk@116736)
New snapshot to include QDeclarative* -> QQml* build fixes
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp')
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp index 61ac1bdeb..bb5b1eb68 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp @@ -33,7 +33,6 @@ #include <WebKit2/WKBundleScriptWorld.h> #include <WebKit2/WKRetainPtr.h> #include <wtf/HashMap.h> -#include <wtf/Vector.h> #include <assert.h> namespace TestWebKitAPI { @@ -46,14 +45,15 @@ static void willDestroyGlobalObjectForDOMWindowExtensionCallback(WKBundlePageRef enum ExtensionState { - Uncreated = 0, Connected, Disconnected, Destroyed + Uncreated = 0, Connected, Disconnected, Destroyed, Removed }; -const char* stateNames[4] = { +const char* stateNames[5] = { "Uncreated", "Connected", "Disconnected", - "Destroyed" + "Destroyed", + "Removed" }; typedef struct { @@ -67,6 +67,7 @@ public: virtual void initialize(WKBundleRef, WKTypeRef userData); virtual void didCreatePage(WKBundleRef, WKBundlePageRef); + virtual void willDestroyPage(WKBundleRef, WKBundlePageRef); void globalObjectIsAvailableForFrame(WKBundleFrameRef, WKBundleScriptWorldRef); void willDisconnectDOMWindowExtensionFromGlobalObject(WKBundleDOMWindowExtensionRef); @@ -85,7 +86,6 @@ private: ExtensionRecord m_extensionRecords[6]; HashMap<WKBundleDOMWindowExtensionRef, int> m_extensionToRecordMap; bool m_finishedOneMainFrameLoad; - int m_numberOfDestroyedExtensions; }; static InjectedBundleTest::Register<DOMWindowExtensionBasic> registrar("DOMWindowExtensionBasic"); @@ -93,7 +93,6 @@ static InjectedBundleTest::Register<DOMWindowExtensionBasic> registrar("DOMWindo DOMWindowExtensionBasic::DOMWindowExtensionBasic(const std::string& identifier) : InjectedBundleTest(identifier) , m_finishedOneMainFrameLoad(false) - , m_numberOfDestroyedExtensions(0) { m_extensionRecords[0].name = "First page, main frame, standard world"; m_extensionRecords[1].name = "First page, main frame, non-standard world"; @@ -167,6 +166,21 @@ void DOMWindowExtensionBasic::didCreatePage(WKBundleRef bundle, WKBundlePageRef WKBundlePageSetPageLoaderClient(page, &pageLoaderClient); } + +void DOMWindowExtensionBasic::willDestroyPage(WKBundleRef, WKBundlePageRef) +{ + HashMap<WKBundleDOMWindowExtensionRef, int>::iterator it = m_extensionToRecordMap.begin(); + HashMap<WKBundleDOMWindowExtensionRef, int>::iterator end = m_extensionToRecordMap.end(); + for (; it != end; ++it) { + updateExtensionStateRecord(it->first, Removed); + WKRelease(it->first); + } + + m_extensionToRecordMap.clear(); + + sendExtensionStateMessage(); + sendBundleMessage("TestComplete"); +} void DOMWindowExtensionBasic::updateExtensionStateRecord(WKBundleDOMWindowExtensionRef extension, ExtensionState state) { @@ -211,19 +225,11 @@ void DOMWindowExtensionBasic::didReconnectDOMWindowExtensionToGlobalObject(WKBun sendBundleMessage("DidReconnectDOMWindowExtensionToGlobalObject called"); } -void DOMWindowExtensionBasic::willDestroyGlobalObjectForDOMWindowExtension(WKBundleDOMWindowExtensionRef extension) +void DOMWindowExtensionBasic::willDestroyGlobalObjectForDOMWindowExtension(WKBundleDOMWindowExtensionRef) { - m_numberOfDestroyedExtensions++; - - updateExtensionStateRecord(extension, Destroyed); - sendBundleMessage("WillDestroyGlobalObjectForDOMWindowExtension called"); - - if (m_numberOfDestroyedExtensions == 6) { - sendExtensionStateMessage(); - sendBundleMessage("TestComplete"); - } - - WKRelease(extension); + // All of the items are candidates for the page cache and should not be evicted from the page + // cache before the test completes. + ASSERT_NOT_REACHED(); } static void didFinishLoadForFrameCallback(WKBundlePageRef, WKBundleFrameRef frame, WKTypeRef*, const void *clientInfo) |