From 1b914638db989aaa98631a1c1e02c7b2d44805d8 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 11 May 2012 09:43:24 +0200 Subject: Imported WebKit commit 9a52e27980f47e8b0d8f8b7cc0fd7b5741bceb92 (http://svn.webkit.org/repository/webkit/trunk@116736) New snapshot to include QDeclarative* -> QQml* build fixes --- .../WebKit2/DOMWindowExtensionBasic_Bundle.cpp | 42 ++++++++++++---------- 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp') 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 #include #include -#include #include 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 m_extensionToRecordMap; bool m_finishedOneMainFrameLoad; - int m_numberOfDestroyedExtensions; }; static InjectedBundleTest::Register registrar("DOMWindowExtensionBasic"); @@ -93,7 +93,6 @@ static InjectedBundleTest::Register 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::iterator it = m_extensionToRecordMap.begin(); + HashMap::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) -- cgit v1.2.1