summaryrefslogtreecommitdiff
path: root/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-11 09:43:24 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-11 09:43:24 +0200
commit1b914638db989aaa98631a1c1e02c7b2d44805d8 (patch)
tree87f4fd2c7b38db320079a5de8877890d2ca3c485 /Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
parent2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (diff)
downloadqtwebkit-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.cpp42
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)