diff options
author | Leon Clarke <leonclarke@google.com> | 2010-07-15 12:03:35 +0100 |
---|---|---|
committer | Leon Clarke <leonclarke@google.com> | 2010-07-20 16:57:23 +0100 |
commit | e458d70a0d18538346f41b503114c9ebe6b2ce12 (patch) | |
tree | 86f1637deca2c524432a822e5fcedd4bef221091 /WebKitTools/DumpRenderTree | |
parent | f43eabc081f7ce6af24b9df4953498a3cd6ca24d (diff) | |
download | external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.zip external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.tar.gz external_webkit-e458d70a0d18538346f41b503114c9ebe6b2ce12.tar.bz2 |
Merge WebKit at r63173 : Initial merge by git.
Change-Id: Ife5af0c7c6261fbbc8ae6bc08c390efa9ef10b44
Diffstat (limited to 'WebKitTools/DumpRenderTree')
55 files changed, 1560 insertions, 492 deletions
diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.gypi b/WebKitTools/DumpRenderTree/DumpRenderTree.gypi index 5fc8dab..a525532 100644 --- a/WebKitTools/DumpRenderTree/DumpRenderTree.gypi +++ b/WebKitTools/DumpRenderTree/DumpRenderTree.gypi @@ -9,6 +9,12 @@ 'chromium/CppBoundClass.h', 'chromium/CppVariant.cpp', 'chromium/CppVariant.h', + 'chromium/DRTDevToolsAgent.cpp', + 'chromium/DRTDevToolsAgent.h', + 'chromium/DRTDevToolsCallArgs.cpp', + 'chromium/DRTDevToolsCallArgs.h', + 'chromium/DRTDevToolsClient.cpp', + 'chromium/DRTDevToolsClient.h', 'chromium/DumpRenderTree.cpp', 'chromium/EventSender.cpp', 'chromium/EventSender.h', diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.sln b/WebKitTools/DumpRenderTree/DumpRenderTree.sln index 399c002..3647a2a 100644 --- a/WebKitTools/DumpRenderTree/DumpRenderTree.sln +++ b/WebKitTools/DumpRenderTree/DumpRenderTree.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTree", "win\DumpRenderTree.vcproj", "{6567DFD4-D6DE-4CD5-825D-17E353D160E1}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestNetscapePlugin", "win\TestNetscapePlugin\TestNetscapePlugin.vcproj", "{C0737398-3565-439E-A2B8-AB2BE4D5430C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestNetscapePlugin", "TestNetscapePlugin\win\TestNetscapePlugin.vcproj", "{C0737398-3565-439E-A2B8-AB2BE4D5430C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FindSafari", "..\FindSafari\FindSafari.vcproj", "{DA31DA52-6675-48D4-89E0-333A7144397C}"
EndProject
diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj b/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj index 6a49b44..2ed5daa 100644 --- a/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj +++ b/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj @@ -24,6 +24,8 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 0F37A4A711E6628700275F54 /* PluginObjectMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F37A4A611E6628700275F54 /* PluginObjectMac.mm */; }; + 0F37A4AA11E6629100275F54 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5A752A108AF5D1F00138E45 /* QuartzCore.framework */; }; 141BF435096A455900E0753C /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9335435F03D75502008635CE /* WebKit.framework */; }; 141BF436096A455900E0753C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84F608908B136DA00E9745F /* Cocoa.framework */; }; 141BF438096A455900E0753C /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A817090308B164D300CCB9FB /* JavaScriptCore.framework */; }; @@ -178,9 +180,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0F37A4A611E6628700275F54 /* PluginObjectMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PluginObjectMac.mm; sourceTree = "<group>"; }; 141BF233096A44CF00E0753C /* TestNetscapePlugIn.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TestNetscapePlugIn.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; 141BF447096A45C800E0753C /* PluginObject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PluginObject.h; sourceTree = "<group>"; }; - 141BF448096A45C800E0753C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 141BF448096A45C800E0753C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; name = Info.plist; path = mac/Info.plist; sourceTree = "<group>"; }; 14770FE00A22ADF7009342EE /* GCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCController.h; sourceTree = "<group>"; }; 1A8F024C0BB9B056008CFA34 /* TestObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestObject.h; sourceTree = "<group>"; }; 1AC6C77F0D07589B00CD3161 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; }; @@ -290,6 +293,7 @@ 141BF436096A455900E0753C /* Cocoa.framework in Frameworks */, 141BF438096A455900E0753C /* JavaScriptCore.framework in Frameworks */, 141BF435096A455900E0753C /* WebKit.framework in Frameworks */, + 0F37A4AA11E6629100275F54 /* QuartzCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -341,7 +345,7 @@ BC9D90230C97472E0099A4A3 /* WorkQueueItem.h */, A8B91AD20CF3B305008F91FF /* AppKit Overrides */, A8B91AC40CF3B170008F91FF /* ObjCPlugin */, - 141BF1F5096A439800E0753C /* TestNetscapePlugIn.subproj */, + 141BF1F5096A439800E0753C /* TestNetscapePlugIn */, 9345229B0BD12B2C0086EDA0 /* Resources */, A803FF6409CAACC1009B2A37 /* Frameworks */, 9340995508540CAF007F3BC8 /* Products */, @@ -350,17 +354,18 @@ name = DumpRenderTree; sourceTree = "<group>"; }; - 141BF1F5096A439800E0753C /* TestNetscapePlugIn.subproj */ = { + 141BF1F5096A439800E0753C /* TestNetscapePlugIn */ = { isa = PBXGroup; children = ( 141BF448096A45C800E0753C /* Info.plist */, 1AC6C77F0D07589B00CD3161 /* main.cpp */, 1AC6C7800D07589B00CD3161 /* PluginObject.cpp */, + 0F37A4A611E6628700275F54 /* PluginObjectMac.mm */, 141BF447096A45C800E0753C /* PluginObject.h */, 1AC6C7810D07589B00CD3161 /* TestObject.cpp */, 1A8F024C0BB9B056008CFA34 /* TestObject.h */, ); - path = TestNetscapePlugIn.subproj; + path = TestNetscapePlugIn; sourceTree = "<group>"; }; 1422A2690AF6F45200E1A883 /* Controllers */ = { @@ -678,6 +683,7 @@ 1AC6C8490D07638600CD3161 /* main.cpp in Sources */, 1AC6C84A0D07638600CD3161 /* PluginObject.cpp in Sources */, 1AC6C84B0D07638600CD3161 /* TestObject.cpp in Sources */, + 0F37A4A711E6628700275F54 /* PluginObjectMac.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -761,6 +767,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */; buildSettings = { + INFOPLIST_FILE = TestNetscapePlugIn/mac/Info.plist; }; name = Debug; }; @@ -768,6 +775,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */; buildSettings = { + INFOPLIST_FILE = TestNetscapePlugIn/mac/Info.plist; }; name = Release; }; @@ -859,6 +867,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */; buildSettings = { + INFOPLIST_FILE = TestNetscapePlugIn/mac/Info.plist; INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)"; SKIP_INSTALL = NO; }; diff --git a/WebKitTools/DumpRenderTree/LayoutTestController.cpp b/WebKitTools/DumpRenderTree/LayoutTestController.cpp index edab29e..cd294bc 100644 --- a/WebKitTools/DumpRenderTree/LayoutTestController.cpp +++ b/WebKitTools/DumpRenderTree/LayoutTestController.cpp @@ -1499,28 +1499,30 @@ static JSValueRef setScrollbarPolicyCallback(JSContextRef context, JSObjectRef, static JSValueRef addUserScriptCallback(JSContextRef context, JSObjectRef, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - if (argumentCount != 2) + if (argumentCount != 3) return JSValueMakeUndefined(context); JSRetainPtr<JSStringRef> source(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); bool runAtStart = JSValueToBoolean(context, arguments[1]); + bool allFrames = JSValueToBoolean(context, arguments[2]); LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); - controller->addUserScript(source.get(), runAtStart); + controller->addUserScript(source.get(), runAtStart, allFrames); return JSValueMakeUndefined(context); } static JSValueRef addUserStyleSheetCallback(JSContextRef context, JSObjectRef, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - if (argumentCount != 1) + if (argumentCount != 2) return JSValueMakeUndefined(context); JSRetainPtr<JSStringRef> source(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); + bool allFrames = JSValueToBoolean(context, arguments[1]); LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); - controller->addUserStyleSheet(source.get()); + controller->addUserStyleSheet(source.get(), allFrames); return JSValueMakeUndefined(context); } diff --git a/WebKitTools/DumpRenderTree/LayoutTestController.h b/WebKitTools/DumpRenderTree/LayoutTestController.h index be79473..16eda2c 100644 --- a/WebKitTools/DumpRenderTree/LayoutTestController.h +++ b/WebKitTools/DumpRenderTree/LayoutTestController.h @@ -241,8 +241,8 @@ public: void addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains); void removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains); - void addUserScript(JSStringRef source, bool runAtStart); - void addUserStyleSheet(JSStringRef source); + void addUserScript(JSStringRef source, bool runAtStart, bool allFrames); + void addUserStyleSheet(JSStringRef source, bool allFrames); void setGeolocationPermission(bool allow); bool isGeolocationPermissionSet() const { return m_isGeolocationPermissionSet; } diff --git a/WebKitTools/DumpRenderTree/PixelDumpSupport.cpp b/WebKitTools/DumpRenderTree/PixelDumpSupport.cpp index e38b2d4..e372827 100644 --- a/WebKitTools/DumpRenderTree/PixelDumpSupport.cpp +++ b/WebKitTools/DumpRenderTree/PixelDumpSupport.cpp @@ -30,9 +30,9 @@ #include "DumpRenderTree.h" #include "LayoutTestController.h" #include "PixelDumpSupport.h" +#include <cstdio> #include <wtf/Assertions.h> #include <wtf/RefPtr.h> -#include <wtf/RetainPtr.h> #if PLATFORM(CG) #include "PixelDumpSupportCG.h" diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp index 477ca17..671069e 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp @@ -132,6 +132,7 @@ enum { ID_PROPERTY_TEST_OBJECT, ID_PROPERTY_LOG_DESTROY, ID_PROPERTY_RETURN_ERROR_FROM_NEWSTREAM, + ID_PROPERTY_RETURN_NEGATIVE_ONE_FROM_WRITE, ID_PROPERTY_PRIVATE_BROWSING_ENABLED, ID_PROPERTY_CACHED_PRIVATE_BROWSING_ENABLED, ID_PROPERTY_THROW_EXCEPTION_PROPERTY, @@ -147,6 +148,7 @@ static const NPUTF8 *pluginPropertyIdentifierNames[NUM_PROPERTY_IDENTIFIERS] = { "testObject", "logDestroy", "returnErrorFromNewStream", + "returnNegativeOneFromWrite", "privateBrowsingEnabled", "cachedPrivateBrowsingEnabled", "testThrowExceptionProperty", @@ -282,6 +284,9 @@ static bool pluginGetProperty(NPObject* obj, NPIdentifier name, NPVariant* resul } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_RETURN_ERROR_FROM_NEWSTREAM]) { BOOLEAN_TO_NPVARIANT(plugin->returnErrorFromNewStream, *result); return true; + } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_RETURN_NEGATIVE_ONE_FROM_WRITE]) { + BOOLEAN_TO_NPVARIANT(plugin->returnNegativeOneFromWrite, *result); + return true; } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_PRIVATE_BROWSING_ENABLED]) { NPBool privateBrowsingEnabled = FALSE; browser->getvalue(plugin->npp, NPNVprivateModeBool, &privateBrowsingEnabled); @@ -317,6 +322,9 @@ static bool pluginSetProperty(NPObject* obj, NPIdentifier name, const NPVariant* } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_RETURN_ERROR_FROM_NEWSTREAM]) { plugin->returnErrorFromNewStream = NPVARIANT_TO_BOOLEAN(*variant); return true; + } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_RETURN_NEGATIVE_ONE_FROM_WRITE]) { + plugin->returnNegativeOneFromWrite = NPVARIANT_TO_BOOLEAN(*variant); + return true; } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_THROW_EXCEPTION_PROPERTY]) { browser->setexception(obj, "plugin object testThrowExceptionProperty SUCCESS"); return true; @@ -967,6 +975,7 @@ static NPObject *pluginAllocate(NPP npp, NPClass *theClass) newInstance->logDestroy = FALSE; newInstance->logSetWindow = FALSE; newInstance->returnErrorFromNewStream = FALSE; + newInstance->returnNegativeOneFromWrite = FALSE; newInstance->stream = 0; newInstance->firstUrl = NULL; diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h index 0020e56..03befb0 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h @@ -25,6 +25,16 @@ #include <WebKit/npfunctions.h> +#if XP_MACOSX +#if !defined(MAC_OS_X_VERSION_10_5) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 +#define BUILDING_ON_TIGER 1 +#elif !defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6 +#define BUILDING_ON_LEOPARD 1 +#elif !defined(MAC_OS_X_VERSION_10_7) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 +#define BUILDING_ON_SNOW_LEOPARD 1 +#endif +#endif // XP_MACOSX + extern NPNetscapeFuncs *browser; typedef struct { @@ -34,6 +44,7 @@ typedef struct { NPBool eventLogging; NPBool logSetWindow; NPBool logDestroy; + NPBool returnNegativeOneFromWrite; NPBool returnErrorFromNewStream; NPBool cachedPrivateBrowsingMode; NPObject* testObject; @@ -55,6 +66,9 @@ typedef struct { #ifdef XP_MACOSX NPEventModel eventModel; #endif +#if XP_MACOSX && !defined(BUILDING_ON_TIGER) + void* coreAnimationLayer; +#endif NPWindow lastWindow; } PluginObject; @@ -65,3 +79,8 @@ extern void testNPRuntime(NPP npp); extern void pluginLog(NPP instance, const char* format, ...); extern bool testDocumentOpen(NPP npp); extern bool testWindowOpen(NPP npp); + +#if XP_MACOSX && !defined(BUILDING_ON_TIGER) +extern void* createCoreAnimationLayer(); +#endif + diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm new file mode 100644 index 0000000..3aff46d --- /dev/null +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2010 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. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``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 COMPUTER, INC. OR + * 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 "PluginObject.h" + +#if !defined(BUILDING_ON_TIGER) + +#include <QuartzCore/QuartzCore.h> + +@interface TestPluginLayer : CALayer +@end + +@implementation TestPluginLayer + +- (void)drawInContext:(CGContextRef)context +{ + CGRect bounds = [self bounds]; + const char* text = "Test Plug-in"; + CGContextSelectFont(context, "Helvetica", 24, kCGEncodingMacRoman); + CGContextShowTextAtPoint(context, bounds.origin.x + 3.0f, bounds.origin.y + bounds.size.height - 30.0f, text, strlen(text)); +} + +@end + +void* createCoreAnimationLayer() +{ + CALayer *caLayer = [[TestPluginLayer alloc] init]; + + NSNull *nullValue = [NSNull null]; + NSDictionary *actions = [NSDictionary dictionaryWithObjectsAndKeys: + nullValue, @"anchorPoint", + nullValue, @"bounds", + nullValue, @"contents", + nullValue, @"contentsRect", + nullValue, @"opacity", + nullValue, @"position", + nullValue, @"shadowColor", + nullValue, @"sublayerTransform", + nullValue, @"sublayers", + nullValue, @"transform", + nullValue, @"zPosition", + nil]; + // Turn off default animations. + [caLayer setStyle:[NSDictionary dictionaryWithObject:actions forKey:@"actions"]]; + [caLayer setNeedsDisplayOnBoundsChange:YES]; + + [caLayer setBounds:CGRectMake(0, 0, 200, 100)]; + [caLayer setAnchorPoint:CGPointZero]; + + CGColorRef color = CGColorCreateGenericRGB(0.5, 0.5, 1, 1); + [caLayer setBackgroundColor:color]; + CGColorRelease(color); + + [caLayer setLayoutManager:[CAConstraintLayoutManager layoutManager]]; + + CALayer *sublayer = [CALayer layer]; + // Turn off default animations. + [sublayer setStyle:[NSDictionary dictionaryWithObject:actions forKey:@"actions"]]; + + color = CGColorCreateGenericRGB(0, 0, 0, 0.75); + [sublayer setBackgroundColor:color]; + CGColorRelease(color); + [sublayer setBounds:CGRectMake(0, 0, 180, 20)]; + + [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinY + relativeTo:@"superlayer" + attribute:kCAConstraintMinY]]; + [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinX + relativeTo:@"superlayer" + attribute:kCAConstraintMinX]]; + [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxX + relativeTo:@"superlayer" + attribute:kCAConstraintMaxX]]; + + [caLayer addSublayer:sublayer]; + return caLayer; +} + +#endif // !defined(BUILDING_ON_TIGER) + diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp index 0b32191..0b32191 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/TestObject.h index 1295fb7..1295fb7 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/TestObject.h diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/mac/Info.plist index 7444b84..7444b84 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/mac/Info.plist diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/main.cpp index eff9c1c..82a6e3a 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/main.cpp @@ -23,25 +23,32 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#import "PluginObject.h" +#include "PluginObject.h" -// Mach-o entry points -extern "C" { - NPError NP_Initialize(NPNetscapeFuncs *browserFuncs); - NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs); - void NP_Shutdown(void); +#if XP_WIN +#define STDCALL __stdcall + +static inline int strcasecmp(const char* s1, const char* s2) +{ + return _stricmp(s1, s2); } -// Mach-o entry points -NPError NP_Initialize(NPNetscapeFuncs *browserFuncs) +#else +#define STDCALL +#endif + +// Entry points +extern "C" +NPError STDCALL NP_Initialize(NPNetscapeFuncs *browserFuncs) { browser = browserFuncs; return NPERR_NO_ERROR; } -NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) +extern "C" +NPError STDCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) { - pluginFuncs->version = 11; + pluginFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR; pluginFuncs->size = sizeof(pluginFuncs); pluginFuncs->newp = NPP_New; pluginFuncs->destroy = NPP_Destroy; @@ -60,7 +67,8 @@ NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) return NPERR_NO_ERROR; } -void NP_Shutdown(void) +extern "C" +void STDCALL NP_Shutdown(void) { } @@ -70,6 +78,9 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc { bool forceCarbon = false; +#if XP_MACOSX + NPEventModel eventModel; + // Always turn on the CG model NPBool supportsCoreGraphics; if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR) @@ -77,12 +88,50 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc if (!supportsCoreGraphics) return NPERR_INCOMPATIBLE_VERSION_ERROR; - - browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreGraphics); + + NPDrawingModel drawingModelToUse = NPDrawingModelCoreGraphics; + + NPBool supportsCoreAnimation; + if (browser->getvalue(instance, NPNVsupportsCoreAnimationBool, &supportsCoreAnimation) != NPERR_NO_ERROR) + supportsCoreAnimation = false; + +#ifndef NP_NO_CARBON + NPBool supportsCarbon = false; +#endif + NPBool supportsCocoa = false; + +#ifndef NP_NO_CARBON + // A browser that doesn't know about NPNVsupportsCarbonBool is one that only supports Carbon event model. + if (browser->getvalue(instance, NPNVsupportsCarbonBool, &supportsCarbon) != NPERR_NO_ERROR) + supportsCarbon = true; +#endif + + if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) + supportsCocoa = false; + + if (supportsCocoa && !forceCarbon) { + eventModel = NPEventModelCocoa; +#ifndef NP_NO_CARBON + } else if (supportsCarbon) { + eventModel = NPEventModelCarbon; +#endif + } else { + return NPERR_INCOMPATIBLE_VERSION_ERROR; + } + + browser->setvalue(instance, NPPVpluginEventModel, (void *)eventModel); +#endif // XP_MACOSX PluginObject* obj = (PluginObject*)browser->createobject(instance, getPluginClass()); instance->pdata = obj; +#if XP_MACOSX + obj->eventModel = eventModel; +#if !defined(BUILDING_ON_TIGER) + obj->coreAnimationLayer = 0; +#endif +#endif // XP_MACOSX + for (int i = 0; i < argc; i++) { if (strcasecmp(argn[i], "onstreamload") == 0 && !obj->onStreamLoad) obj->onStreamLoad = strdup(argv[i]); @@ -113,37 +162,41 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc obj->testDocumentOpenInDestroyStream = TRUE; else if (strcasecmp(argn[i], "testwindowopen") == 0) obj->testWindowOpen = TRUE; - else if (strcasecmp(argn[i], "src") == 0 && strstr(argv[i], "plugin-document-has-focus.pl")) + else if (strcasecmp(argn[i], "drawingmodel") == 0) { +#if XP_MACOSX && !defined(BUILDING_ON_TIGER) + const char* value = argv[i]; + if (strcasecmp(value, "coreanimation") == 0) { + if (supportsCoreAnimation) + drawingModelToUse = NPDrawingModelCoreAnimation; + else + return NPERR_INCOMPATIBLE_VERSION_ERROR; + } else if (strcasecmp(value, "coregraphics") == 0) { + if (supportsCoreGraphics) + drawingModelToUse = NPDrawingModelCoreGraphics; + else + return NPERR_INCOMPATIBLE_VERSION_ERROR; + } else + return NPERR_INCOMPATIBLE_VERSION_ERROR; +#endif + } else if (strcasecmp(argn[i], "testGetURLOnDestroy") == 0) { +#if XP_WIN + // FIXME: When https://bugs.webkit.org/show_bug.cgi?id=41831 is fixed, this #ifdef can be removed. + obj->testGetURLOnDestroy = TRUE; +#endif + } else if (strcasecmp(argn[i], "src") == 0 && strstr(argv[i], "plugin-document-has-focus.pl")) obj->testKeyboardFocusForPlugins = TRUE; } - -#ifndef NP_NO_CARBON - NPBool supportsCarbon = false; -#endif - NPBool supportsCocoa = false; -#ifndef NP_NO_CARBON - // A browser that doesn't know about NPNVsupportsCarbonBool is one that only supports Carbon event model. - if (browser->getvalue(instance, NPNVsupportsCarbonBool, &supportsCarbon) != NPERR_NO_ERROR) - supportsCarbon = true; +#if XP_MACOSX + browser->setvalue(instance, NPPVpluginDrawingModel, (void *)drawingModelToUse); +#if !defined(BUILDING_ON_TIGER) + if (drawingModelToUse == NPDrawingModelCoreAnimation) + obj->coreAnimationLayer = createCoreAnimationLayer(); #endif - - if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) - supportsCocoa = false; - - if (supportsCocoa && !forceCarbon) { - obj->eventModel = NPEventModelCocoa; -#ifndef NP_NO_CARBON - } else if (supportsCarbon) { - obj->eventModel = NPEventModelCarbon; #endif - } else { - return NPERR_INCOMPATIBLE_VERSION_ERROR; - } - + browser->getvalue(instance, NPNVprivateModeBool, (void *)&obj->cachedPrivateBrowsingMode); - browser->setvalue(instance, NPPVpluginEventModel, (void *)obj->eventModel); - + return NPERR_NO_ERROR; } @@ -151,6 +204,9 @@ NPError NPP_Destroy(NPP instance, NPSavedData **save) { PluginObject* obj = static_cast<PluginObject*>(instance->pdata); if (obj) { + if (obj->testGetURLOnDestroy) + browser->geturlnotify(obj->npp, "about:blank", "", 0); + if (obj->onDestroy) { executeScript(obj, obj->onDestroy); free(obj->onDestroy); @@ -171,6 +227,11 @@ NPError NPP_Destroy(NPP instance, NPSavedData **save) if (obj->logDestroy) pluginLog(instance, "NPP_Destroy"); +#if XP_MACOSX && !defined(BUILDING_ON_TIGER) + if (obj->coreAnimationLayer) + CFRelease(obj->coreAnimationLayer); +#endif + browser->releaseobject(&obj->header); } return NPERR_NO_ERROR; @@ -223,7 +284,7 @@ NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, NPBool se { PluginObject* obj = static_cast<PluginObject*>(instance->pdata); obj->stream = stream; - *stype = NP_ASFILEONLY; + *stype = NP_NORMAL; if (obj->returnErrorFromNewStream) return NPERR_GENERIC_ERROR; @@ -241,8 +302,28 @@ NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason) { PluginObject* obj = (PluginObject*)instance->pdata; - if (obj->onStreamDestroy) - executeScript(obj, obj->onStreamDestroy); + if (obj->onStreamDestroy) { + NPObject* windowObject = 0; + NPError error = browser->getvalue(instance, NPNVWindowNPObject, &windowObject); + + if (error == NPERR_NO_ERROR) { + NPVariant onStreamDestroyVariant; + if (browser->getproperty(instance, windowObject, browser->getstringidentifier(obj->onStreamDestroy), &onStreamDestroyVariant)) { + if (NPVARIANT_IS_OBJECT(onStreamDestroyVariant)) { + NPObject* onStreamDestroyFunction = NPVARIANT_TO_OBJECT(onStreamDestroyVariant); + + NPVariant reasonVariant; + INT32_TO_NPVARIANT(reason, reasonVariant); + + NPVariant result; + browser->invokeDefault(instance, onStreamDestroyFunction, &reasonVariant, 1, &result); + browser->releasevariantvalue(&result); + } + browser->releasevariantvalue(&onStreamDestroyVariant); + } + browser->releaseobject(windowObject); + } + } if (obj->testDocumentOpenInDestroyStream) { testDocumentOpen(instance); @@ -254,12 +335,17 @@ NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason) int32_t NPP_WriteReady(NPP instance, NPStream *stream) { - return 0; + return 4096; } int32_t NPP_Write(NPP instance, NPStream *stream, int32_t offset, int32_t len, void *buffer) { - return 0; + PluginObject* obj = (PluginObject*)instance->pdata; + + if (obj->returnNegativeOneFromWrite) + return -1; + + return len; } void NPP_StreamAsFile(NPP instance, NPStream *stream, const char *fname) @@ -270,6 +356,7 @@ void NPP_Print(NPP instance, NPPrint *platformPrint) { } +#if XP_MACOSX #ifndef NP_NO_CARBON static int16_t handleEventCarbon(NPP instance, PluginObject* obj, EventRecord* event) { @@ -401,12 +488,15 @@ static int16_t handleEventCocoa(NPP instance, PluginObject* obj, NPCocoaEvent* e return 0; } +#endif // XP_MACOSX + int16_t NPP_HandleEvent(NPP instance, void *event) { PluginObject* obj = static_cast<PluginObject*>(instance->pdata); if (!obj->eventLogging) return 0; +#if XP_MACOSX #ifndef NP_NO_CARBON if (obj->eventModel == NPEventModelCarbon) return handleEventCarbon(instance, obj, static_cast<EventRecord*>(event)); @@ -414,6 +504,10 @@ int16_t NPP_HandleEvent(NPP instance, void *event) assert(obj->eventModel == NPEventModelCocoa); return handleEventCocoa(instance, obj, static_cast<NPCocoaEvent*>(event)); +#else + // FIXME: Implement for other platforms. + return 0; +#endif // XP_MACOSX } void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData) @@ -438,6 +532,17 @@ NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) return NPERR_NO_ERROR; } +#if XP_MACOSX && !defined(BUILDING_ON_TIGER) + if (variable == NPPVpluginCoreAnimationLayer) { + if (!obj->coreAnimationLayer) + return NPERR_GENERIC_ERROR; + + void **v = (void **)value; + *v = (void*)CFRetain(obj->coreAnimationLayer); + return NPERR_NO_ERROR; + } +#endif + return NPERR_GENERIC_ERROR; } diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.def index ac41e7e..ac41e7e 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.def diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc index a8fbbcd..a8fbbcd 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj index 0177d99..34d2f08 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj @@ -368,15 +368,60 @@ </References>
<Files>
<File
- RelativePath=".\main.cpp"
+ RelativePath="..\main.cpp"
>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug_Internal|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug_Cairo|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug_All|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
</File>
<File
- RelativePath="..\..\TestNetscapePlugIn.subproj\PluginObject.cpp"
+ RelativePath="..\PluginObject.cpp"
>
</File>
<File
- RelativePath="..\..\TestNetscapePlugIn.subproj\PluginObject.h"
+ RelativePath="..\PluginObject.h"
>
</File>
<File
@@ -396,11 +441,11 @@ >
</File>
<File
- RelativePath="..\..\TestNetscapePlugIn.subproj\TestObject.cpp"
+ RelativePath="..\TestObject.cpp"
>
</File>
<File
- RelativePath="..\..\TestNetscapePlugIn.subproj\TestObject.h"
+ RelativePath="..\TestObject.h"
>
</File>
</Files>
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin_debug.def b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin_debug.def index 158fb7c..158fb7c 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin_debug.def +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin_debug.def diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/resource.h index b0ce340..b0ce340 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn/win/resource.h diff --git a/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp index 889b7b3..7de019d 100644 --- a/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp +++ b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp @@ -1,97 +1,93 @@ -/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
- * (C) 2009 Brent Fulgham <bfulgham@webkit.org>
- *
- * 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 "PixelDumpSupportCairo.h"
-
-#include "DumpRenderTree.h"
-#include "PixelDumpSupport.h"
-#include <algorithm>
-#include <ctype.h>
-#include <wtf/Assertions.h>
-#include <wtf/RefPtr.h>
-#include <wtf/RetainPtr.h>
-#include <wtf/StringExtras.h>
-
-#if PLATFORM(WIN)
-#include "MD5.h"
-#endif
-
-using namespace std;
-
-static cairo_status_t writeFunction(void* closure, const unsigned char* data, unsigned int length)
-{
- Vector<unsigned char>* in = reinterpret_cast<Vector<unsigned char>*>(closure);
- in->append(data, length);
- return CAIRO_STATUS_SUCCESS;
-}
-
-static void printPNG(cairo_surface_t* image)
-{
- Vector<unsigned char> pixelData;
- // Only PNG output is supported for now.
- cairo_surface_write_to_png_stream(image, writeFunction, &pixelData);
-
- const size_t dataLength = pixelData.size();
- const unsigned char* data = pixelData.data();
-
- printPNG(data, dataLength);
-}
-
-void computeMD5HashStringForBitmapContext(BitmapContext* context, char hashString[33])
-{
- cairo_t* bitmapContext = context->cairoContext();
- cairo_surface_t* surface = cairo_get_target(bitmapContext);
-
- ASSERT(cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32); // ImageDiff assumes 32 bit RGBA, we must as well.
-
- size_t pixelsHigh = cairo_image_surface_get_height(surface);
- size_t pixelsWide = cairo_image_surface_get_width(surface);
- size_t bytesPerRow = pixelsWide * cairo_image_surface_get_stride(surface);
-
- MD5_CTX md5Context;
- MD5_Init(&md5Context);
- unsigned char* bitmapData = static_cast<unsigned char*>(cairo_image_surface_get_data(surface));
- for (unsigned row = 0; row < pixelsHigh; row++) {
- MD5_Update(&md5Context, bitmapData, 4 * pixelsWide);
- bitmapData += bytesPerRow;
- }
- unsigned char hash[16];
- MD5_Final(hash, &md5Context);
-
- hashString[0] = '\0';
- for (int i = 0; i < 16; i++)
- snprintf(hashString, 33, "%s%02x", hashString, hash[i]);
-}
-
-void dumpBitmap(BitmapContext* context)
-{
- cairo_surface_t* surface = cairo_get_target(context->cairoContext());
- printPNG(surface);
-}
+/* + * Copyright (C) 2009 Apple Inc. All rights reserved. + * (C) 2009 Brent Fulgham <bfulgham@webkit.org> + * (C) 2010 Igalia S.L + * + * 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 "PixelDumpSupportCairo.h" + +#include "DumpRenderTree.h" +#include "PixelDumpSupport.h" +#include <algorithm> +#include <ctype.h> +#include <wtf/Assertions.h> +#include <wtf/MD5.h> +#include <wtf/RefPtr.h> +#include <wtf/StringExtras.h> + +using namespace std; + +static cairo_status_t writeFunction(void* closure, const unsigned char* data, unsigned int length) +{ + Vector<unsigned char>* in = reinterpret_cast<Vector<unsigned char>*>(closure); + in->append(data, length); + return CAIRO_STATUS_SUCCESS; +} + +static void printPNG(cairo_surface_t* image) +{ + Vector<unsigned char> pixelData; + // Only PNG output is supported for now. + cairo_surface_write_to_png_stream(image, writeFunction, &pixelData); + + const size_t dataLength = pixelData.size(); + const unsigned char* data = pixelData.data(); + + printPNG(data, dataLength); +} + +void computeMD5HashStringForBitmapContext(BitmapContext* context, char hashString[33]) +{ + cairo_t* bitmapContext = context->cairoContext(); + cairo_surface_t* surface = cairo_get_target(bitmapContext); + + ASSERT(cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32); // ImageDiff assumes 32 bit RGBA, we must as well. + + size_t pixelsHigh = cairo_image_surface_get_height(surface); + size_t pixelsWide = cairo_image_surface_get_width(surface); + size_t bytesPerRow = cairo_image_surface_get_stride(surface); + + MD5 md5Context; + unsigned char* bitmapData = static_cast<unsigned char*>(cairo_image_surface_get_data(surface)); + for (unsigned row = 0; row < pixelsHigh; row++) { + md5Context.addBytes(bitmapData, 4 * pixelsWide); + bitmapData += bytesPerRow; + } + Vector<uint8_t, 16> hash; + md5Context.checksum(hash); + + snprintf(hashString, 33, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + hash[8], hash[9], hash[10], hash[11], hash[12], hash[13], hash[14], hash[15]); +} + +void dumpBitmap(BitmapContext* context) +{ + cairo_surface_t* surface = cairo_get_target(context->cairoContext()); + printPNG(surface); +} diff --git a/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.h b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.h index d1a0c3f..fa1f48b 100644 --- a/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.h +++ b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.h @@ -36,6 +36,8 @@ #if PLATFORM(WIN) #include <windows.h> #include <cairo-win32.h> +#elif PLATFORM(GTK) +#include <cairo.h> #endif #if PLATFORM(WIN) @@ -68,16 +70,12 @@ private: BitmapContext(PlatformBitmapBuffer buffer, cairo_t* context) : m_buffer(buffer) + , m_context(context) { - if (m_context) - cairo_destroy(m_context); - - m_context = context; } PlatformBitmapBuffer m_buffer; cairo_t* m_context; - }; #endif // PixelDumpSupportCairo_h diff --git a/WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp new file mode 100644 index 0000000..0ff77a0 --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2010 Google 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: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT + * OWNER OR 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 "DRTDevToolsAgent.h" + +#include "DRTDevToolsCallArgs.h" +#include "DRTDevToolsClient.h" + +#include "public/WebCString.h" +#include "public/WebDevToolsAgent.h" +#include "public/WebDevToolsMessageData.h" +#include "public/WebString.h" +#include "public/WebView.h" +#include "webkit/support/webkit_support.h" + +using namespace WebKit; + +DRTDevToolsAgent::DRTDevToolsAgent() + : m_callMethodFactory(this) + , m_drtDevToolsClient(0) + , m_webView(0) +{ + static int devToolsAgentCounter = 0; + + m_routingID = ++devToolsAgentCounter; + if (m_routingID == 1) + WebDevToolsAgent::setMessageLoopDispatchHandler(&DRTDevToolsAgent::dispatchMessageLoop); +} + +void DRTDevToolsAgent::setWebView(WebView* webView) +{ + m_webView = webView; +} + +void DRTDevToolsAgent::sendMessageToFrontend(const WebDevToolsMessageData& data) +{ + if (m_drtDevToolsClient) + m_drtDevToolsClient->asyncCall(DRTDevToolsCallArgs(data)); +} + +void DRTDevToolsAgent::forceRepaint() +{ +} + +void DRTDevToolsAgent::runtimeFeatureStateChanged(const WebKit::WebString& feature, bool enabled) +{ + // FIXME: implement this. +} + +WebCString DRTDevToolsAgent::injectedScriptSource() +{ + return webkit_support::GetDevToolsInjectedScriptSource(); +} + +WebCString DRTDevToolsAgent::injectedScriptDispatcherSource() +{ + return webkit_support::GetDevToolsInjectedScriptDispatcherSource(); +} + +WebCString DRTDevToolsAgent::debuggerScriptSource() +{ + return webkit_support::GetDevToolsDebuggerScriptSource(); +} + +void DRTDevToolsAgent::asyncCall(const DRTDevToolsCallArgs &args) +{ + webkit_support::PostTaskFromHere( + m_callMethodFactory.NewRunnableMethod(&DRTDevToolsAgent::call, args)); +} + +void DRTDevToolsAgent::call(const DRTDevToolsCallArgs &args) +{ + WebDevToolsAgent* agent = webDevToolsAgent(); + if (agent) + agent->dispatchMessageFromFrontend(args.m_data); + if (DRTDevToolsCallArgs::callsCount() == 1 && m_drtDevToolsClient) + m_drtDevToolsClient->allMessagesProcessed(); +} + +WebDevToolsAgent* DRTDevToolsAgent::webDevToolsAgent() +{ + if (!m_webView) + return 0; + return m_webView->devToolsAgent(); +} + +void DRTDevToolsAgent::attach(DRTDevToolsClient* client) +{ + ASSERT(!m_drtDevToolsClient); + m_drtDevToolsClient = client; + WebDevToolsAgent* agent = webDevToolsAgent(); + if (agent) + agent->attach(); +} + +void DRTDevToolsAgent::detach(DRTDevToolsClient* client) +{ + ASSERT(m_drtDevToolsClient); + WebDevToolsAgent* agent = webDevToolsAgent(); + if (agent) + agent->detach(); + m_drtDevToolsClient = 0; +} + +bool DRTDevToolsAgent::setTimelineProfilingEnabled(bool enabled) +{ + WebDevToolsAgent* agent = webDevToolsAgent(); + if (!agent) + return false; + agent->setTimelineProfilingEnabled(enabled); + return true; +} + +bool DRTDevToolsAgent::evaluateInWebInspector(long callID, const std::string& script) +{ + WebDevToolsAgent* agent = webDevToolsAgent(); + if (!agent) + return false; + agent->evaluateInWebInspector(callID, WebString::fromUTF8(script)); + return true; +} + +// static method +void DRTDevToolsAgent::dispatchMessageLoop() +{ + webkit_support::DispatchMessageLoop(); +} diff --git a/WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.h b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.h new file mode 100644 index 0000000..37fc119 --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsAgent.h @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2010 Google 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: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT + * OWNER OR 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 DRTDevToolsAgent_h +#define DRTDevToolsAgent_h + +#include "base/task.h" // FIXME: remove this +#include "public/WebDevToolsAgentClient.h" +#include <wtf/Noncopyable.h> + +namespace WebKit { + +class WebCString; +class WebDevToolsAgent; +class WebView; +struct WebDevToolsMessageData; + +} // namespace WebKit + +class DRTDevToolsCallArgs; +class DRTDevToolsClient; + +class DRTDevToolsAgent : public WebKit::WebDevToolsAgentClient + , public Noncopyable { +public: + DRTDevToolsAgent(); + virtual ~DRTDevToolsAgent() {} + + void setWebView(WebKit::WebView*); + + // WebDevToolsAgentClient implementation. + virtual void sendMessageToFrontend(const WebKit::WebDevToolsMessageData&); + virtual int hostIdentifier() { return m_routingID; } + virtual void forceRepaint(); + virtual void runtimeFeatureStateChanged(const WebKit::WebString& feature, bool enabled); + virtual WebKit::WebCString injectedScriptSource(); + virtual WebKit::WebCString injectedScriptDispatcherSource(); + virtual WebKit::WebCString debuggerScriptSource(); + + void asyncCall(const DRTDevToolsCallArgs&); + + void attach(DRTDevToolsClient*); + void detach(DRTDevToolsClient*); + + bool evaluateInWebInspector(long callID, const std::string& script); + bool setTimelineProfilingEnabled(bool enable); + +private: + void call(const DRTDevToolsCallArgs&); + static void dispatchMessageLoop(); + WebKit::WebDevToolsAgent* webDevToolsAgent(); + + ScopedRunnableMethodFactory<DRTDevToolsAgent> m_callMethodFactory; + DRTDevToolsClient* m_drtDevToolsClient; + int m_routingID; + WebKit::WebDevToolsAgent* m_webDevToolsAgent; + WebKit::WebView* m_webView; +}; + +#endif // DRTDevToolsAgent_h diff --git a/WebKitTools/DumpRenderTree/chromium/DRTDevToolsCallArgs.cpp b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsCallArgs.cpp new file mode 100644 index 0000000..dacd6f7 --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsCallArgs.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2010 Google 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: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT + * OWNER OR 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 "DRTDevToolsCallArgs.h" + +// static +int DRTDevToolsCallArgs::m_callsCount = 0; + diff --git a/WebKitTools/DumpRenderTree/chromium/DRTDevToolsCallArgs.h b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsCallArgs.h new file mode 100644 index 0000000..e4a3d48 --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsCallArgs.h @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2010 Google 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: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT + * OWNER OR 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 DRTDevToolsCallArgs_h +#define DRTDevToolsCallArgs_h + +#include "public/WebDevToolsMessageData.h" +#include "public/WebString.h" +#include <wtf/Assertions.h> + +class DRTDevToolsCallArgs { +public: + DRTDevToolsCallArgs(const WebKit::WebDevToolsMessageData& data) + : m_data(data) + { + ++m_callsCount; + + // The same behaviour as we have in case of IPC. + for (size_t i = 0; i < m_data.arguments.size(); ++i) { + if (m_data.arguments[i].isNull()) + m_data.arguments[i] = WebKit::WebString::fromUTF8(""); + } + } + + DRTDevToolsCallArgs(const DRTDevToolsCallArgs& args) + : m_data(args.m_data) + { + ++m_callsCount; + } + + ~DRTDevToolsCallArgs() + { + --m_callsCount; + ASSERT(m_callsCount >= 0); + } + + static int callsCount() { return m_callsCount; } + + WebKit::WebDevToolsMessageData m_data; + +private: + static int m_callsCount; +}; + +#endif // DRTDevToolsCallArgs_h diff --git a/WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.cpp b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.cpp new file mode 100644 index 0000000..e14f008 --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.cpp @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2010 Google 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: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT + * OWNER OR 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 "DRTDevToolsClient.h" + +#include "DRTDevToolsAgent.h" +#include "DRTDevToolsCallArgs.h" + +#include "public/WebDevToolsAgent.h" +#include "public/WebDevToolsFrontend.h" +#include "public/WebFrame.h" +#include "public/WebScriptSource.h" +#include "public/WebString.h" +#include "public/WebView.h" +#include "webkit/support/webkit_support.h" + +using namespace WebKit; + +DRTDevToolsClient::DRTDevToolsClient(DRTDevToolsAgent* agent, WebView* webView) + : m_callMethodFactory(this) + , m_drtDevToolsAgent(agent) + , m_webView(webView) +{ + m_webDevToolsFrontend.set(WebDevToolsFrontend::create(m_webView, + this, + WebString::fromUTF8("en-US"))); + m_drtDevToolsAgent->attach(this); +} + +DRTDevToolsClient::~DRTDevToolsClient() +{ + // There is a chance that the page will be destroyed at detach step of + // m_drtDevToolsAgent and we should clean pending requests a bit earlier. + m_callMethodFactory.RevokeAll(); + if (m_drtDevToolsAgent) + m_drtDevToolsAgent->detach(this); +} + +void DRTDevToolsClient::sendMessageToAgent(const WebDevToolsMessageData& data) +{ + if (m_drtDevToolsAgent) + m_drtDevToolsAgent->asyncCall(DRTDevToolsCallArgs(data)); +} + +void DRTDevToolsClient::sendDebuggerCommandToAgent(const WebString& command) +{ + WebDevToolsAgent::executeDebuggerCommand(command, 1); +} + +void DRTDevToolsClient::activateWindow() +{ + // Not implemented. +} + +void DRTDevToolsClient::closeWindow() +{ + // Not implemented. +} + +void DRTDevToolsClient::dockWindow() +{ + // Not implemented. +} + +void DRTDevToolsClient::undockWindow() +{ + // Not implemented. +} + +void DRTDevToolsClient::asyncCall(const DRTDevToolsCallArgs& args) +{ + webkit_support::PostTaskFromHere( + m_callMethodFactory.NewRunnableMethod(&DRTDevToolsClient::call, args)); +} + +void DRTDevToolsClient::call(const DRTDevToolsCallArgs& args) +{ + m_webDevToolsFrontend->dispatchMessageFromAgent(args.m_data); + if (DRTDevToolsCallArgs::callsCount() == 1) + allMessagesProcessed(); +} + +void DRTDevToolsClient::allMessagesProcessed() +{ + m_webView->mainFrame()->executeScript( + WebKit::WebScriptSource(WebString::fromUTF8( + "if (window.WebInspector && WebInspector.queuesAreEmpty) WebInspector.queuesAreEmpty();"))); +} diff --git a/WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.h b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.h new file mode 100644 index 0000000..f08644b --- /dev/null +++ b/WebKitTools/DumpRenderTree/chromium/DRTDevToolsClient.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2010 Google 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: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT + * OWNER OR 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 DRTDevToolsClient_h +#define DRTDevToolsClient_h + +#include "base/task.h" // FIXME: remove this +#include "public/WebDevToolsFrontendClient.h" +#include <wtf/Noncopyable.h> +#include <wtf/OwnPtr.h> + +namespace WebKit { + +class WebDevToolsFrontend; +struct WebDevToolsMessageData; +class WebString; +class WebView; + +} // namespace WebKit + +class DRTDevToolsCallArgs; +class DRTDevToolsAgent; + +class DRTDevToolsClient : public WebKit::WebDevToolsFrontendClient + , public Noncopyable { +public: + DRTDevToolsClient(DRTDevToolsAgent*, WebKit::WebView*); + virtual ~DRTDevToolsClient(); + + // WebDevToolsFrontendClient implementation + virtual void sendMessageToAgent(const WebKit::WebDevToolsMessageData&); + virtual void sendDebuggerCommandToAgent(const WebKit::WebString& command); + + virtual void activateWindow(); + virtual void closeWindow(); + virtual void dockWindow(); + virtual void undockWindow(); + + void asyncCall(const DRTDevToolsCallArgs&); + + void allMessagesProcessed(); + + private: + void call(const DRTDevToolsCallArgs&); + + ScopedRunnableMethodFactory<DRTDevToolsClient> m_callMethodFactory; + WebKit::WebView* m_webView; + DRTDevToolsAgent* m_drtDevToolsAgent; + WTF::OwnPtr<WebKit::WebDevToolsFrontend> m_webDevToolsFrontend; +}; + +#endif // DRTDevToolsClient_h diff --git a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp index 9ba6421..0f37d7e 100644 --- a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp +++ b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp @@ -32,6 +32,7 @@ #include "config.h" #include "LayoutTestController.h" +#include "DRTDevToolsAgent.h" #include "TestShell.h" #include "WebViewHost.h" #include "base/string_util.h" @@ -95,6 +96,7 @@ LayoutTestController::LayoutTestController(TestShell* shell) bindMethod("objCIdentityIsEqual", &LayoutTestController::objCIdentityIsEqual); bindMethod("setAlwaysAcceptCookies", &LayoutTestController::setAlwaysAcceptCookies); bindMethod("showWebInspector", &LayoutTestController::showWebInspector); + bindMethod("closeWebInspector", &LayoutTestController::closeWebInspector); bindMethod("setWindowIsKey", &LayoutTestController::setWindowIsKey); bindMethod("setTabKeyCyclesThroughElements", &LayoutTestController::setTabKeyCyclesThroughElements); bindMethod("setUserStyleSheetLocation", &LayoutTestController::setUserStyleSheetLocation); @@ -555,6 +557,12 @@ void LayoutTestController::showWebInspector(const CppArgumentList&, CppVariant* result->setNull(); } +void LayoutTestController::closeWebInspector(const CppArgumentList& args, CppVariant* result) +{ + m_shell->closeDevTools(); + result->setNull(); +} + void LayoutTestController::setWindowIsKey(const CppArgumentList& arguments, CppVariant* result) { if (arguments.size() > 0 && arguments[0].isBool()) @@ -1245,7 +1253,7 @@ void LayoutTestController::setTimelineProfilingEnabled(const CppArgumentList& ar result->setNull(); if (arguments.size() < 1 || !arguments[0].isBool()) return; - // FIXME: Should call TestShellDevToolsAgent::setTimelineProfilingEnabled(). + m_shell->drtDevToolsAgent()->setTimelineProfilingEnabled(arguments[0].toBoolean()); } void LayoutTestController::evaluateInWebInspector(const CppArgumentList& arguments, CppVariant* result) @@ -1253,7 +1261,7 @@ void LayoutTestController::evaluateInWebInspector(const CppArgumentList& argumen result->setNull(); if (arguments.size() < 2 || !arguments[0].isInt32() || !arguments[1].isString()) return; - // FIXME: Should call TestShellDevToolsAgent::evaluateInWebInspector(). + m_shell->drtDevToolsAgent()->evaluateInWebInspector(arguments[0].toInt32(), arguments[1].toString()); } void LayoutTestController::forceRedSelectionColors(const CppArgumentList& arguments, CppVariant* result) @@ -1265,17 +1273,22 @@ void LayoutTestController::forceRedSelectionColors(const CppArgumentList& argume void LayoutTestController::addUserScript(const CppArgumentList& arguments, CppVariant* result) { result->setNull(); - if (arguments.size() < 2 || !arguments[0].isString() || !arguments[1].isBool()) + if (arguments.size() < 3 || !arguments[0].isString() || !arguments[1].isBool() || !arguments[2].isBool()) return; - m_shell->webView()->addUserScript(cppVariantToWebString(arguments[0]), arguments[1].toBoolean()); + WebView::addUserScript( + cppVariantToWebString(arguments[0]), WebVector<WebString>(), + arguments[1].toBoolean() ? WebView::UserScriptInjectAtDocumentStart : WebView::UserScriptInjectAtDocumentEnd, + arguments[2].toBoolean() ? WebView::UserContentInjectInAllFrames : WebView::UserContentInjectInTopFrameOnly); } void LayoutTestController::addUserStyleSheet(const CppArgumentList& arguments, CppVariant* result) { result->setNull(); - if (arguments.size() < 1 || !arguments[0].isString()) + if (arguments.size() < 2 || !arguments[0].isString() || !arguments[1].isBool()) return; - m_shell->webView()->addUserStyleSheet(cppVariantToWebString(arguments[0])); + WebView::addUserStyleSheet( + cppVariantToWebString(arguments[0]), WebVector<WebString>(), + arguments[2].toBoolean() ? WebView::UserContentInjectInAllFrames : WebView::UserContentInjectInTopFrameOnly); } void LayoutTestController::setEditingBehavior(const CppArgumentList& arguments, CppVariant* results) diff --git a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h index 22741d5..5d65726 100644 --- a/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h +++ b/WebKitTools/DumpRenderTree/chromium/LayoutTestController.h @@ -129,6 +129,7 @@ public: // Shows DevTools window. void showWebInspector(const CppArgumentList&, CppVariant*); + void closeWebInspector(const CppArgumentList&, CppVariant*); // Gives focus to the window. void setWindowIsKey(const CppArgumentList&, CppVariant*); diff --git a/WebKitTools/DumpRenderTree/chromium/TestShell.cpp b/WebKitTools/DumpRenderTree/chromium/TestShell.cpp index 52f1e7d..a4b161a 100644 --- a/WebKitTools/DumpRenderTree/chromium/TestShell.cpp +++ b/WebKitTools/DumpRenderTree/chromium/TestShell.cpp @@ -31,6 +31,8 @@ #include "config.h" #include "TestShell.h" +#include "DRTDevToolsAgent.h" +#include "DRTDevToolsClient.h" #include "LayoutTestController.h" #include "WebViewHost.h" #include "base/md5.h" // FIXME: Wrap by webkit_support. @@ -81,6 +83,7 @@ TestShell::TestShell(bool testShellMode) , m_focusedWidget(0) , m_testShellMode(testShellMode) , m_allowExternalPages(false) + , m_devTools(0) { WebRuntimeFeatures::enableGeolocation(true); m_accessibilityController.set(new AccessibilityController(this)); @@ -97,12 +100,17 @@ TestShell::TestShell(bool testShellMode) // timed-out DRT process was crashed. m_timeout = 30 * 1000; + m_drtDevToolsAgent.set(new DRTDevToolsAgent); m_webViewHost = createWebView(); m_webView = m_webViewHost->webView(); + m_drtDevToolsAgent->setWebView(m_webView); } TestShell::~TestShell() { + // Note: DevTools are closed together with all the other windows in the + // windows list. + loadURL(GURL("about:blank")); // Call GC twice to clean up garbage. callJSGC(); @@ -112,6 +120,34 @@ TestShell::~TestShell() m_webView->close(); } +void TestShell::createDRTDevToolsClient(DRTDevToolsAgent* agent) +{ + m_drtDevToolsClient.set(new DRTDevToolsClient(agent, m_devTools->webView())); +} + +void TestShell::showDevTools() +{ + if (!m_devTools) { + WebURL url = webkit_support::GetDevToolsPathAsURL(); + if (!url.isValid()) { + ASSERT(false); + return; + } + m_devTools = createNewWindow(url); + ASSERT(m_devTools); + createDRTDevToolsClient(m_drtDevToolsAgent.get()); + } + m_devTools->show(WebKit::WebNavigationPolicyNewWindow); +} + +void TestShell::closeDevTools() +{ + if (m_devTools) { + closeWindow(m_devTools); + m_devTools = 0; + } +} + void TestShell::resetWebSettings(WebView& webView) { // Match the settings used by Mac DumpRenderTree, with the exception of @@ -206,6 +242,9 @@ void TestShell::runFileTest(const TestParams& params) || testUrl.find("loading\\") != string::npos) m_layoutTestController->setShouldDumpFrameLoadCallbacks(true); + if (inspectorTestMode) + showDevTools(); + m_printer->handleTestHeader(testUrl.c_str()); loadURL(m_params.testUrl); @@ -586,7 +625,7 @@ WebViewHost* TestShell::createWebView() WebViewHost* TestShell::createNewWindow(const WebURL& url) { WebViewHost* host = new WebViewHost(this); - WebView* view = WebView::create(host, 0); + WebView* view = WebView::create(host, m_drtDevToolsAgent.get()); host->setWebWidget(view); resetWebSettings(*view); view->initializeMainFrame(host); diff --git a/WebKitTools/DumpRenderTree/chromium/TestShell.h b/WebKitTools/DumpRenderTree/chromium/TestShell.h index 2397246..0f74ee1 100644 --- a/WebKitTools/DumpRenderTree/chromium/TestShell.h +++ b/WebKitTools/DumpRenderTree/chromium/TestShell.h @@ -28,6 +28,9 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifndef TestShell_h +#define TestShell_h + #include "AccessibilityController.h" #include "EventSender.h" #include "LayoutTestController.h" @@ -44,6 +47,7 @@ // various objects. Only one instance is created in one DRT process. namespace WebKit { +class WebDevToolsAgentClient; class WebFrame; class WebNotificationPresenter; class WebPreferences; @@ -54,6 +58,10 @@ namespace skia { class PlatformCanvas; } +class DRTDevToolsAgent; +class DRTDevToolsCallArgs; +class DRTDevToolsClient; + struct TestParams { bool dumpTree; bool dumpPixels; @@ -73,6 +81,7 @@ class TestShell { public: TestShell(bool testShellMode); ~TestShell(); + // The main WebView. WebKit::WebView* webView() const { return m_webView; } // Returns the host for the main WebView. @@ -126,11 +135,18 @@ public: void closeRemainingWindows(); int windowCount(); static void resizeWindowForTest(WebViewHost*, const WebKit::WebURL&); - void showDevTools() {} // FIXME: imeplement this. + + void showDevTools(); + void closeDevTools(); + + DRTDevToolsAgent* drtDevToolsAgent() { return m_drtDevToolsAgent.get(); } + DRTDevToolsClient* drtDevToolsClient() { return m_drtDevToolsClient.get(); } static const int virtualWindowBorder = 3; private: + void createDRTDevToolsClient(DRTDevToolsAgent*); + static void resetWebSettings(WebKit::WebView&); void dump(); std::string dumpAllBackForwardLists(); @@ -143,6 +159,9 @@ private: WebKit::WebWidget* m_focusedWidget; bool m_testShellMode; WebViewHost* m_webViewHost; + WebViewHost* m_devTools; + OwnPtr<DRTDevToolsAgent> m_drtDevToolsAgent; + OwnPtr<DRTDevToolsClient> m_drtDevToolsClient; OwnPtr<AccessibilityController> m_accessibilityController; OwnPtr<EventSender> m_eventSender; OwnPtr<LayoutTestController> m_layoutTestController; @@ -166,3 +185,5 @@ private: }; void platformInit(); + +#endif // TestShell_h diff --git a/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp b/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp index df12476..202248a 100755 --- a/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp +++ b/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp @@ -332,6 +332,11 @@ void WebThemeControlDRT::draw() nestedBoxes(checkIndent, checkIndent, checkIndent, checkIndent, m_bgColor, m_fgColor); break; + case IndeterminateCheckboxType: + // Indeterminate checkbox is a box containing '-'. + nestedBoxes(checkIndent, halfHeight, checkIndent, halfHeight, m_bgColor, m_fgColor); + break; + case UncheckedRadioType: circle(SkIntToScalar(halfHeight), m_bgColor); break; diff --git a/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h b/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h index 1f73610..38831d9 100644 --- a/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h +++ b/WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h @@ -98,6 +98,7 @@ public: PushButtonType, UncheckedBoxType, CheckedBoxType, + IndeterminateCheckboxType, UncheckedRadioType, CheckedRadioType, HorizontalScrollTrackBackType, diff --git a/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp b/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp index b3092cc..c28da1f 100755 --- a/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp +++ b/WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp @@ -147,6 +147,32 @@ void WebThemeEngineDRT::paintButton(WebCanvas* canvas, cstate = WebThemeControlDRT::DisabledState; break; + case CBS_MIXEDNORMAL: + // Classic theme can't represent mixed state checkbox. We assume + // it's equivalent to unchecked. + ASSERT(classicState == DFCS_BUTTONCHECK); + ctype = WebThemeControlDRT::IndeterminateCheckboxType; + cstate = WebThemeControlDRT::NormalState; + break; + + case CBS_MIXEDHOT: + ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_HOT)); + ctype = WebThemeControlDRT::IndeterminateCheckboxType; + cstate = WebThemeControlDRT::HotState; + break; + + case CBS_MIXEDPRESSED: + ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_PUSHED)); + ctype = WebThemeControlDRT::IndeterminateCheckboxType; + cstate = WebThemeControlDRT::PressedState; + break; + + case CBS_MIXEDDISABLED: + ASSERT(classicState == (DFCS_BUTTONCHECK | DFCS_INACTIVE)); + ctype = WebThemeControlDRT::IndeterminateCheckboxType; + cstate = WebThemeControlDRT::DisabledState; + break; + default: ASSERT_NOT_REACHED(); break; diff --git a/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp b/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp index ef821ce..c57aeb5 100644 --- a/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp +++ b/WebKitTools/DumpRenderTree/chromium/WebViewHost.cpp @@ -57,6 +57,7 @@ #include "skia/ext/platform_canvas.h" #include "webkit/support/webkit_support.h" #include <wtf/Assertions.h> +#include <wtf/PassOwnPtr.h> using namespace WebCore; using namespace WebKit; @@ -747,7 +748,7 @@ void WebViewHost::didCancelClientRedirect(WebFrame* frame) void WebViewHost::didCreateDataSource(WebFrame*, WebDataSource* ds) { - ds->setExtraData(m_pendingExtraData.release()); + ds->setExtraData(m_pendingExtraData.leakPtr()); } void WebViewHost::didStartProvisionalLoad(WebFrame* frame) @@ -862,7 +863,7 @@ void WebViewHost::didFinishLoad(WebFrame* frame) void WebViewHost::didNavigateWithinPage(WebFrame* frame, bool isNewNavigation) { - frame->dataSource()->setExtraData(m_pendingExtraData.release()); + frame->dataSource()->setExtraData(m_pendingExtraData.leakPtr()); updateForCommittedLoad(frame, isNewNavigation); } @@ -1193,7 +1194,7 @@ void WebViewHost::updateURL(WebFrame* frame) if (!historyItem.isNull()) entry->setContentState(historyItem); - navigationController()->didNavigateToEntry(entry.release()); + navigationController()->didNavigateToEntry(entry.leakPtr()); updateAddressBar(frame->view()); m_lastPageIdUpdated = max(m_lastPageIdUpdated, m_pageId); } @@ -1293,12 +1294,12 @@ void WebViewHost::paintInvalidatedRegion() WebSize widgetSize = webWidget()->size(); WebRect clientRect(0, 0, widgetSize.width, widgetSize.height); - // Paint the canvas if necessary. Allow painting to generate extra rects the - // first time we call it. This is necessary because some WebCore rendering + // Paint the canvas if necessary. Allow painting to generate extra rects + // for the first two calls. This is necessary because some WebCore rendering // objects update their layout only when painted. // Store the total area painted in total_paint. Then tell the gdk window // to update that area after we're done painting it. - for (int i = 0; i < 2; ++i) { + for (int i = 0; i < 3; ++i) { // m_paintRect = intersect(m_paintRect , clientRect) int left = max(m_paintRect.x, clientRect.x); int top = max(m_paintRect.y, clientRect.y); @@ -1314,7 +1315,7 @@ void WebViewHost::paintInvalidatedRegion() WebRect rect(m_paintRect); m_paintRect = WebRect(); paintRect(rect); - if (i == 1) + if (i >= 1) LOG_ERROR("painting caused additional invalidations"); } ASSERT(m_paintRect.isEmpty()); diff --git a/WebKitTools/DumpRenderTree/chromium/config.h b/WebKitTools/DumpRenderTree/chromium/config.h index 6029532..7dfda18 100644 --- a/WebKitTools/DumpRenderTree/chromium/config.h +++ b/WebKitTools/DumpRenderTree/chromium/config.h @@ -44,8 +44,10 @@ #include <wtf/Platform.h> -// JS_EXPORTDATA is needed to inlucde wtf/WTFString.h. #if OS(WINDOWS) && !COMPILER(GCC) +// Allow 'this' to be used in base member initializer list. +#pragma warning(disable : 4355) +// JS_EXPORTDATA is needed to inlucde wtf/WTFString.h. #define JS_EXPORTDATA __declspec(dllimport) #else #define JS_EXPORTDATA diff --git a/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp index d79addf..da05804 100644 --- a/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp +++ b/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp @@ -36,23 +36,22 @@ #include "EventSender.h" #include "GCController.h" #include "LayoutTestController.h" +#include "PixelDumpSupport.h" #include "WorkQueue.h" #include "WorkQueueItem.h" - +#include <JavaScriptCore/JavaScript.h> +#include <cassert> +#include <cstdlib> +#include <cstring> +#include <getopt.h> #include <gtk/gtk.h> #include <webkit/webkit.h> -#include <JavaScriptCore/JavaScript.h> - #include <wtf/Assertions.h> #if PLATFORM(X11) #include <fontconfig/fontconfig.h> #endif -#include <cassert> -#include <getopt.h> -#include <stdlib.h> -#include <string.h> using namespace std; @@ -422,7 +421,7 @@ void dump() if (dumpPixels) { if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive()) { - // FIXME: Add support for dumping pixels + dumpWebViewAsPixelsAndCompareWithExpected(gLayoutTestController->expectedPixelHash()); } } diff --git a/WebKitTools/DumpRenderTree/gtk/ImageDiff.cpp b/WebKitTools/DumpRenderTree/gtk/ImageDiff.cpp new file mode 100644 index 0000000..c40b232 --- /dev/null +++ b/WebKitTools/DumpRenderTree/gtk/ImageDiff.cpp @@ -0,0 +1,234 @@ +/* + * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com> + * Copyright (C) 2010 Igalia S.L. + * + * 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 <algorithm> +#include <cmath> +#include <cstdio> +#include <cstring> +#include <gdk/gdk.h> + +using namespace std; + +static double tolerance = 0; +static GOptionEntry commandLineOptionEntries[] = +{ + { "tolerance", 0, 0, G_OPTION_ARG_DOUBLE, &tolerance, "Percentage difference between images before considering them different", "T" }, + { 0, 0, 0, G_OPTION_ARG_NONE, 0, 0, 0 }, +}; + +GdkPixbuf* readPixbufFromStdin(long imageSize) +{ + unsigned char imageBuffer[2048]; + GdkPixbufLoader* loader = gdk_pixbuf_loader_new_with_type("png", 0); + GError* error = 0; + + while (imageSize > 0) { + size_t bytesToRead = min<int>(imageSize, 2048); + size_t bytesRead = fread(imageBuffer, 1, bytesToRead, stdin); + + if (!gdk_pixbuf_loader_write(loader, reinterpret_cast<const guchar*>(imageBuffer), bytesRead, &error)) { + g_error_free(error); + gdk_pixbuf_loader_close(loader, 0); + g_object_unref(loader); + return 0; + } + + imageSize -= static_cast<int>(bytesRead); + } + + gdk_pixbuf_loader_close(loader, 0); + GdkPixbuf* decodedImage = gdk_pixbuf_loader_get_pixbuf(loader); + g_object_ref(decodedImage); + return decodedImage; +} + +GdkPixbuf* differenceImageFromDifferenceBuffer(unsigned char* buffer, int width, int height) +{ + GdkPixbuf* image = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, width, height); + if (!image) + return image; + + int rowStride = gdk_pixbuf_get_rowstride(image); + unsigned char* diffPixels = gdk_pixbuf_get_pixels(image); + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + unsigned char* diffPixel = diffPixels + (y * rowStride) + (x * 3); + diffPixel[0] = diffPixel[1] = diffPixel[2] = *buffer++; + } + } + + return image; +} + +float calculateDifference(GdkPixbuf* baselineImage, GdkPixbuf* actualImage, GdkPixbuf** differenceImage) +{ + int width = gdk_pixbuf_get_width(actualImage); + int height = gdk_pixbuf_get_height(actualImage); + int numberOfChannels = gdk_pixbuf_get_n_channels(actualImage); + if ((width != gdk_pixbuf_get_width(baselineImage)) + || (height != gdk_pixbuf_get_height(baselineImage)) + || (numberOfChannels != gdk_pixbuf_get_n_channels(baselineImage)) + || (gdk_pixbuf_get_has_alpha(actualImage) != gdk_pixbuf_get_has_alpha(baselineImage))) { + fprintf(stderr, "Error, test and reference image have different properties.\n"); + return 100; // Completely different. + } + + unsigned char* diffBuffer = static_cast<unsigned char*>(malloc(width * height)); + float count = 0; + float sum = 0; + float maxDistance = 0; + int actualRowStride = gdk_pixbuf_get_rowstride(actualImage); + int baseRowStride = gdk_pixbuf_get_rowstride(baselineImage); + unsigned char* actualPixels = gdk_pixbuf_get_pixels(actualImage); + unsigned char* basePixels = gdk_pixbuf_get_pixels(baselineImage); + unsigned char* currentDiffPixel = diffBuffer; + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + unsigned char* actualPixel = actualPixels + (y * actualRowStride) + (x * numberOfChannels); + unsigned char* basePixel = basePixels + (y * baseRowStride) + (x * numberOfChannels); + + float red = (actualPixel[0] - basePixel[0]) / max<float>(255 - basePixel[0], basePixel[0]); + float green = (actualPixel[1] - basePixel[1]) / max<float>(255 - basePixel[1], basePixel[1]); + float blue = (actualPixel[2] - basePixel[2]) / max<float>(255 - basePixel[2], basePixel[2]); + float alpha = (actualPixel[3] - basePixel[3]) / max<float>(255 - basePixel[3], basePixel[3]); + float distance = sqrtf(red * red + green * green + blue * blue + alpha * alpha) / 2.0f; + + *currentDiffPixel++ = (unsigned char)(distance * 255.0f); + + if (distance >= 1.0f / 255.0f) { + count += 1.0f; + sum += distance; + maxDistance = max<float>(maxDistance, distance); + } + } + } + + // Compute the difference as a percentage combining both the number of + // different pixels and their difference amount i.e. the average distance + // over the entire image + float difference = 0; + if (count > 0.0f) + difference = 100.0f * sum / (height * width); + if (difference <= tolerance) + difference = 0; + else { + difference = roundf(difference * 100.0f) / 100.0f; + difference = max(difference, 0.01f); // round to 2 decimal places + *differenceImage = differenceImageFromDifferenceBuffer(diffBuffer, width, height); + } + + free(diffBuffer); + return difference; +} + +void printImage(GdkPixbuf* image) +{ + char* buffer; + gsize bufferSize; + GError* error = 0; + if (!gdk_pixbuf_save_to_buffer(image, &buffer, &bufferSize, "png", &error, NULL)) { + g_error_free(error); + return; // Don't bail out, as we can still use the percentage output. + } + + printf("Content-Length: %"G_GSIZE_FORMAT"\n", bufferSize); + fwrite(buffer, 1, bufferSize, stdout); +} + +void printImageDifferences(GdkPixbuf* baselineImage, GdkPixbuf* actualImage) +{ + GdkPixbuf* differenceImage = 0; + float difference = calculateDifference(baselineImage, actualImage, &differenceImage); + if (difference > 0.0f) { + if (differenceImage) { + printImage(differenceImage); + g_object_unref(differenceImage); + } + printf("diff: %01.2f%% failed\n", difference); + } else { + printf("diff: %01.2f%% passed\n", difference); + } +} + +int main(int argc, char* argv[]) +{ + gdk_init(&argc, &argv); + + GError* error = 0; + GOptionContext* context = g_option_context_new("- compare two image files, printing their percentage difference and the difference image to stdout"); + g_option_context_add_main_entries(context, commandLineOptionEntries, 0); + if (!g_option_context_parse(context, &argc, &argv, &error)) { + printf("Option parsing failed: %s\n", error->message); + g_error_free(error); + return 1; + } + + GdkPixbuf* actualImage = 0; + GdkPixbuf* baselineImage = 0; + char buffer[2048]; + while (fgets(buffer, sizeof(buffer), stdin)) { + // Convert the first newline into a NUL character so that strtok doesn't produce it. + char* newLineCharacter = strchr(buffer, '\n'); + if (newLineCharacter) + *newLineCharacter = '\0'; + + if (!strncmp("Content-Length: ", buffer, 16)) { + char* context; + strtok_r(buffer, " ", &context); + long imageSize = strtol(strtok_r(0, " ", &context), 0, 10); + + if (imageSize > 0 && !actualImage) { + if (!(actualImage = readPixbufFromStdin(imageSize))) { + printf("Error, could not read actual image.\n"); + return 1; + } + } else if (imageSize > 0 && !baselineImage) { + if (!(baselineImage = readPixbufFromStdin(imageSize))) { + printf("Error, could not read baseline image.\n"); + return 1; + } + } else { + printf("Error, image size must be specified..\n"); + return 1; + } + } + + if (actualImage && baselineImage) { + printImageDifferences(baselineImage, actualImage); + g_object_unref(actualImage); + g_object_unref(baselineImage); + actualImage = 0; + baselineImage = 0; + } + + fflush(stdout); + } + + return 0; +} diff --git a/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp b/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp index 1814933..5c942d3 100644 --- a/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp +++ b/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp @@ -624,12 +624,12 @@ void LayoutTestController::overridePreference(JSStringRef key, JSStringRef value g_free(strValue); } -void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart) +void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart, bool allFrames) { printf("LayoutTestController::addUserScript not implemented.\n"); } -void LayoutTestController::addUserStyleSheet(JSStringRef source) +void LayoutTestController::addUserStyleSheet(JSStringRef source, bool allFrames) { printf("LayoutTestController::addUserStyleSheet not implemented.\n"); } diff --git a/WebKitTools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp b/WebKitTools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp new file mode 100644 index 0000000..f0f461c --- /dev/null +++ b/WebKitTools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com> + * Copyright (C) 2010 Igalia S.L. + * + * 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 "DumpRenderTree.h" +#include "PixelDumpSupportCairo.h" +#include <webkit/webkit.h> + +PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool, bool, bool, bool) +{ + WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); + GdkPixmap* pixmap = gtk_widget_get_snapshot(GTK_WIDGET(view), 0); + gint width, height; + gdk_drawable_get_size(GDK_DRAWABLE(pixmap), &width, &height); + + cairo_surface_t* imageSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); + cairo_t* context = cairo_create(imageSurface); + gdk_cairo_set_source_pixmap(context, pixmap, 0, 0); + cairo_paint(context); + g_object_unref(pixmap); + + return BitmapContext::createByAdoptingBitmapAndContext(0, context); +} diff --git a/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm b/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm index 939398d..ba0631d 100644 --- a/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm +++ b/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm @@ -1000,9 +1000,9 @@ AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned col, JSStringRef AccessibilityUIElement::selectedTextRange() { - NSRange range = NSMakeRange(0,0); + NSRange range = NSMakeRange(NSNotFound, 0); BEGIN_AX_OBJC_EXCEPTIONS - NSNumber *indexRange = [m_element accessibilityAttributeValue:NSAccessibilitySelectedTextRangeAttribute]; + NSValue *indexRange = [m_element accessibilityAttributeValue:NSAccessibilitySelectedTextRangeAttribute]; if (indexRange) range = [indexRange rangeValue]; NSMutableString *rangeDescription = [NSMutableString stringWithFormat:@"{%d, %d}",range.location, range.length]; diff --git a/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm b/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm index 9b044c3..aec4c19 100644 --- a/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm +++ b/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm @@ -627,18 +627,18 @@ void LayoutTestController::setScrollbarPolicy(JSStringRef orientation, JSStringR // FIXME: implement } -void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart) +void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart, bool allFrames) { RetainPtr<CFStringRef> sourceCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, source)); NSString *sourceNS = (NSString *)sourceCF.get(); - [WebView _addUserScriptToGroup:@"org.webkit.DumpRenderTree" world:[WebScriptWorld world] source:sourceNS url:nil whitelist:nil blacklist:nil injectionTime:(runAtStart ? WebInjectAtDocumentStart : WebInjectAtDocumentEnd)]; + [WebView _addUserScriptToGroup:@"org.webkit.DumpRenderTree" world:[WebScriptWorld world] source:sourceNS url:nil whitelist:nil blacklist:nil injectionTime:(runAtStart ? WebInjectAtDocumentStart : WebInjectAtDocumentEnd) injectedFrames:(allFrames ? WebInjectInAllFrames : WebInjectInTopFrameOnly)]; } -void LayoutTestController::addUserStyleSheet(JSStringRef source) +void LayoutTestController::addUserStyleSheet(JSStringRef source, bool allFrames) { RetainPtr<CFStringRef> sourceCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, source)); NSString *sourceNS = (NSString *)sourceCF.get(); - [WebView _addUserStyleSheetToGroup:@"org.webkit.DumpRenderTree" world:[WebScriptWorld world] source:sourceNS url:nil whitelist:nil blacklist:nil]; + [WebView _addUserStyleSheetToGroup:@"org.webkit.DumpRenderTree" world:[WebScriptWorld world] source:sourceNS url:nil whitelist:nil blacklist:nil injectedFrames:(allFrames ? WebInjectInAllFrames : WebInjectInTopFrameOnly)]; } void LayoutTestController::setDeveloperExtrasEnabled(bool enabled) diff --git a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm b/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm index 9244110..fca65f9 100644 --- a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm +++ b/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm @@ -166,8 +166,10 @@ using namespace std; - (void)webView:(WebView *)wv resource:(id)identifier didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource { - if (!gLayoutTestController->handlesAuthenticationChallenges()) + if (!gLayoutTestController->handlesAuthenticationChallenges()) { + [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; return; + } const char* user = gLayoutTestController->authenticationUsername().c_str(); NSString *nsUser = [NSString stringWithFormat:@"%s", user ? user : ""]; diff --git a/WebKitTools/DumpRenderTree/mac/UIDelegate.mm b/WebKitTools/DumpRenderTree/mac/UIDelegate.mm index 83bf0c6..3dc378a 100644 --- a/WebKitTools/DumpRenderTree/mac/UIDelegate.mm +++ b/WebKitTools/DumpRenderTree/mac/UIDelegate.mm @@ -183,6 +183,12 @@ DumpRenderTreeDraggingInfo *draggingInfo = nil; return NO; } +- (BOOL)webView:(WebView *)webView didPressMissingPluginButton:(DOMElement *)element +{ + printf("MISSING PLUGIN BUTTON PRESSED\n"); + return TRUE; +} + - (void)dealloc { [draggingInfo release]; diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp index 008190f..dd11428 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp @@ -687,5 +687,26 @@ void LayoutTestController::evaluateScriptInIsolatedWorld(int worldID, const QStr DumpRenderTreeSupportQt::evaluateScriptInIsolatedWorld(m_drt->webPage()->mainFrame(), worldID, script); } +bool LayoutTestController::isPageBoxVisible(int pageIndex) +{ + return DumpRenderTreeSupportQt::isPageBoxVisible(m_drt->webPage()->mainFrame(), pageIndex); +} + +QString LayoutTestController::pageSizeAndMarginsInPixels(int pageIndex, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) +{ + return DumpRenderTreeSupportQt::pageSizeAndMarginsInPixels(m_drt->webPage()->mainFrame(), pageIndex, + width, height, marginTop, marginRight, marginBottom, marginLeft); +} + +QString LayoutTestController::pageProperty(const QString& propertyName, int pageNumber) +{ + return DumpRenderTreeSupportQt::pageProperty(m_drt->webPage()->mainFrame(), propertyName, pageNumber); +} + +void LayoutTestController::addUserStyleSheet(const QString& sourceCode) +{ + DumpRenderTreeSupportQt::addUserStyleSheet(m_drt->webPage(), sourceCode); +} + const unsigned LayoutTestController::maxViewWidth = 800; const unsigned LayoutTestController::maxViewHeight = 600; diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h index ed1a232..76bc802 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h @@ -217,6 +217,10 @@ public slots: void setEditingBehavior(const QString& editingBehavior); void evaluateScriptInIsolatedWorld(int worldID, const QString& script); + bool isPageBoxVisible(int pageIndex); + QString pageSizeAndMarginsInPixels(int pageIndex, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft); + QString pageProperty(const QString& propertyName, int pageNumber); + void addUserStyleSheet(const QString& sourceCode); private slots: void processWork(); diff --git a/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro b/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro index 9b19231..6ab22fc 100644 --- a/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro +++ b/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro @@ -1,7 +1,7 @@ TEMPLATE = lib TARGET = TestNetscapePlugIn -VPATH = ../../unix/TestNetscapePlugin ../../TestNetscapePlugIn.subproj +VPATH = ../../unix/TestNetscapePlugin ../../TestNetscapePlugIn isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. include(../../../../WebKit.pri) @@ -10,7 +10,7 @@ DESTDIR = $$OUTPUT_DIR/lib/plugins mac { CONFIG += plugin CONFIG += plugin_bundle - QMAKE_INFO_PLIST = ../../TestNetscapePlugIn.subproj/Info.plist + QMAKE_INFO_PLIST = ../../TestNetscapePlugIn/mac/Info.plist QMAKE_PLUGIN_BUNDLE_NAME = $$TARGET QMAKE_BUNDLE_LOCATION += "Contents/MacOS" @@ -23,14 +23,15 @@ INCLUDEPATH += ../../../../JavaScriptCore \ ../../unix/TestNetscapePlugin/ForwardingHeaders/WebKit \ ../../../../WebCore \ ../../../../WebCore/bridge \ - ../../TestNetscapePlugIn.subproj + ../../TestNetscapePlugIn SOURCES = PluginObject.cpp \ TestObject.cpp mac { - SOURCES += ../../TestNetscapePlugIn.subproj/main.cpp - LIBS += -framework Carbon + SOURCES += ../../TestNetscapePlugIn/main.cpp + OBJECTIVE_SOURCES += PluginObjectMac.mm + LIBS += -framework Carbon -framework Cocoa -framework QuartzCore } else { SOURCES += ../../unix/TestNetscapePlugin/TestNetscapePlugin.cpp } diff --git a/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp b/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp index e960a06..ca868be 100644 --- a/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp +++ b/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp @@ -175,7 +175,7 @@ webkit_test_plugin_new_stream(NPP instance, { PluginObject* obj = static_cast<PluginObject*>(instance->pdata); obj->stream = stream; - *stype = NP_ASFILEONLY; + *stype = NP_NORMAL; if (obj->returnErrorFromNewStream) return NPERR_GENERIC_ERROR; @@ -190,12 +190,32 @@ webkit_test_plugin_new_stream(NPP instance, } static NPError -webkit_test_plugin_destroy_stream(NPP instance, NPStream* /*stream*/, NPError /*reason*/) +webkit_test_plugin_destroy_stream(NPP instance, NPStream* /*stream*/, NPError reason) { PluginObject* obj = (PluginObject*)instance->pdata; - if (obj->onStreamDestroy) - executeScript(obj, obj->onStreamDestroy); + if (obj->onStreamDestroy) { + NPObject* windowObject = 0; + NPError error = browser->getvalue(instance, NPNVWindowNPObject, &windowObject); + + if (error == NPERR_NO_ERROR) { + NPVariant onStreamDestroyVariant; + if (browser->getproperty(instance, windowObject, browser->getstringidentifier(obj->onStreamDestroy), &onStreamDestroyVariant)) { + if (NPVARIANT_IS_OBJECT(onStreamDestroyVariant)) { + NPObject* onStreamDestroyFunction = NPVARIANT_TO_OBJECT(onStreamDestroyVariant); + + NPVariant reasonVariant; + INT32_TO_NPVARIANT(reason, reasonVariant); + + NPVariant result; + browser->invokeDefault(instance, onStreamDestroyFunction, &reasonVariant, 1, &result); + browser->releasevariantvalue(&result); + } + browser->releasevariantvalue(&onStreamDestroyVariant); + } + browser->releaseobject(windowObject); + } + } if (obj->testDocumentOpenInDestroyStream) { testDocumentOpen(instance); @@ -213,17 +233,22 @@ webkit_test_plugin_stream_as_file(NPP /*instance*/, NPStream* /*stream*/, const static int32_t webkit_test_plugin_write_ready(NPP /*instance*/, NPStream* /*stream*/) { - return 0; + return 4096; } static int32_t -webkit_test_plugin_write(NPP /*instance*/, +webkit_test_plugin_write(NPP instance, NPStream* /*stream*/, int32_t /*offset*/, - int32_t /*len*/, + int32_t len, void* /*buffer*/) { - return 0; + PluginObject* obj = (PluginObject*)instance->pdata; + + if (obj->returnNegativeOneFromWrite) + return -1; + + return len; } static void diff --git a/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj b/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj index 4d2dea8..125c6c6 100644 --- a/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj +++ b/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj @@ -55,6 +55,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib comsuppw.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
@@ -84,7 +85,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
<Configuration
@@ -128,6 +129,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib comsuppw.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
@@ -157,7 +159,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
<Configuration
@@ -200,6 +202,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib comsuppw.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
@@ -228,7 +231,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
<Configuration
@@ -271,6 +274,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CFLite_Debug.lib cairo.lib libjpeg.lib libpng.lib libcurl_imp.lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib comsuppw.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
@@ -300,7 +304,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
<Configuration
@@ -344,6 +348,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CFLite.lib cairo.lib libjpeg.lib libpng.lib libcurl_imp.lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib comsuppw.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
@@ -373,7 +378,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
<Configuration
@@ -416,6 +421,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib comsuppw.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
@@ -444,7 +450,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreVideo$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42.dll" xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42.dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
if exist "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb"xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc42$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
</Configurations>
diff --git a/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj b/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj index 361069a..0a02110 100644 --- a/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj +++ b/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj @@ -51,6 +51,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
AdditionalLibraryDirectories=""
SubSystem="1"
@@ -119,6 +120,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
AdditionalLibraryDirectories=""
SubSystem="1"
@@ -186,6 +188,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
AdditionalLibraryDirectories=""
SubSystem="1"
@@ -253,6 +256,7 @@ />
<Tool
Name="VCLinkerTool"
+ AdditionalOptions="/NXCOMPAT"
AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
AdditionalLibraryDirectories=""
SubSystem="1"
diff --git a/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp b/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp index df96328..b79bb2a 100644 --- a/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp +++ b/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp @@ -1040,7 +1040,7 @@ void LayoutTestController::setScrollbarPolicy(JSStringRef orientation, JSStringR // FIXME: implement } -void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart) +void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart, bool allFrames) { COMPtr<IWebViewPrivate> webView; if (FAILED(WebKitCreateInstance(__uuidof(WebView), 0, __uuidof(webView), reinterpret_cast<void**>(&webView)))) @@ -1054,7 +1054,7 @@ void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart) } -void LayoutTestController::addUserStyleSheet(JSStringRef source) +void LayoutTestController::addUserStyleSheet(JSStringRef source, bool allFrames) { COMPtr<IWebViewPrivate> webView; if (FAILED(WebKitCreateInstance(__uuidof(WebView), 0, __uuidof(webView), reinterpret_cast<void**>(&webView)))) diff --git a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp index 2e031da..ce01933 100644 --- a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp +++ b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp @@ -280,18 +280,20 @@ HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didReceiveAuthenticationChalleng /* [in] */ IWebURLAuthenticationChallenge *challenge, /* [in] */ IWebDataSource *dataSource) { - if (!gLayoutTestController->handlesAuthenticationChallenges()) + COMPtr<IWebURLAuthenticationChallengeSender> sender; + if (!challenge || FAILED(challenge->sender(&sender))) return E_FAIL; + + if (!gLayoutTestController->handlesAuthenticationChallenges()) { + sender->continueWithoutCredentialForAuthenticationChallenge(challenge); + return S_OK; + } const char* user = gLayoutTestController->authenticationUsername().c_str(); const char* password = gLayoutTestController->authenticationPassword().c_str(); printf("%S - didReceiveAuthenticationChallenge - Responding with %s:%s\n", descriptionSuitableForTestResult(identifier).c_str(), user, password); - - COMPtr<IWebURLAuthenticationChallengeSender> sender; - if (!challenge || FAILED(challenge->sender(&sender))) - return E_FAIL; - + COMPtr<IWebURLCredential> credential; if (FAILED(WebKitCreateInstance(CLSID_WebURLCredential, 0, IID_IWebURLCredential, (void**)&credential))) return E_FAIL; diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp deleted file mode 100644 index 24c6304..0000000 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* - IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in - consideration of your agreement to the following terms, and your use, installation, - modification or redistribution of this Apple software constitutes acceptance of these - terms. If you do not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and subject to these - terms, Apple grants you a personal, non-exclusive license, under Apple's copyrights in - this original Apple software (the "Apple Software"), to use, reproduce, modify and - redistribute the Apple Software, with or without modifications, in source and/or binary - forms; provided that if you redistribute the Apple Software in its entirety and without - modifications, you must retain this notice and the following text and disclaimers in all - such redistributions of the Apple Software. Neither the name, trademarks, service marks - or logos of Apple Computer, Inc. may be used to endorse or promote products derived from - the Apple Software without specific prior written permission from Apple. Except as expressly - stated in this notice, no other rights or licenses, express or implied, are granted by Apple - herein, including but not limited to any patent rights that may be infringed by your - derivative works or by other works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, - EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS - USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, - REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND - WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR - OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "PluginObject.h" - -#include <stdio.h> - -extern "C" -NPError __stdcall NP_Initialize(NPNetscapeFuncs* browserFuncs) -{ - browser = browserFuncs; - return NPERR_NO_ERROR; -} - -extern "C" -NPError __stdcall NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) -{ - pluginFuncs->version = 11; - pluginFuncs->size = sizeof(pluginFuncs); - pluginFuncs->newp = NPP_New; - pluginFuncs->destroy = NPP_Destroy; - pluginFuncs->setwindow = NPP_SetWindow; - pluginFuncs->newstream = NPP_NewStream; - pluginFuncs->destroystream = NPP_DestroyStream; - pluginFuncs->asfile = NPP_StreamAsFile; - pluginFuncs->writeready = NPP_WriteReady; - pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write; - pluginFuncs->print = NPP_Print; - pluginFuncs->event = NPP_HandleEvent; - pluginFuncs->urlnotify = NPP_URLNotify; - pluginFuncs->getvalue = NPP_GetValue; - pluginFuncs->setvalue = NPP_SetValue; - - return NPERR_NO_ERROR; -} - - -extern "C" -NPError __stdcall NP_Shutdown() -{ - return NPERR_NO_ERROR; -} - -static void executeScript(const PluginObject* object, const char* script) -{ - NPObject *windowScriptObject; - browser->getvalue(object->npp, NPNVWindowNPObject, &windowScriptObject); - - NPString npScript; - npScript.UTF8Characters = script; - npScript.UTF8Length = strlen(script); - - NPVariant browserResult; - browser->evaluate(object->npp, windowScriptObject, &npScript, &browserResult); - browser->releasevariantvalue(&browserResult); -} - -NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char *argn[], char *argv[], NPSavedData *saved) -{ - if (browser->version >= 14) { - PluginObject* obj = (PluginObject*)browser->createobject(instance, getPluginClass()); - instance->pdata = obj; - - for (int16_t i = 0; i < argc; i++) { - if (_stricmp(argn[i], "onstreamload") == 0 && !obj->onStreamLoad) - obj->onStreamLoad = _strdup(argv[i]); - else if (_stricmp(argn[i], "onStreamDestroy") == 0 && !obj->onStreamDestroy) - obj->onStreamDestroy = _strdup(argv[i]); - else if (_stricmp(argn[i], "onURLNotify") == 0 && !obj->onURLNotify) - obj->onURLNotify = _strdup(argv[i]); - else if (_stricmp(argn[i], "onDestroy") == 0 && !obj->onDestroy) - obj->onDestroy = _strdup(argv[i]); - else if (_stricmp(argn[i], "logSrc") == 0) { - for (int i = 0; i < argc; i++) - if (_stricmp(argn[i], "src") == 0) - pluginLog(instance, "src: %s", argv[i]); - } else if (_stricmp(argn[i], "testdocumentopenindestroystream") == 0) - obj->testDocumentOpenInDestroyStream = TRUE; - else if (_stricmp(argn[i], "testGetURLOnDestroy") == 0) - obj->testGetURLOnDestroy = TRUE; - else if (_stricmp(argn[i], "testwindowopen") == 0) - obj->testWindowOpen = TRUE; - else if (_stricmp(argn[i], "onSetWindow") == 0 && !obj->onSetWindow) - obj->onSetWindow = strdup(argv[i]); - } - - browser->getvalue(instance, NPNVprivateModeBool, (void *)&obj->cachedPrivateBrowsingMode); - } - - return NPERR_NO_ERROR; -} - -NPError NPP_Destroy(NPP instance, NPSavedData **save) -{ - PluginObject *obj = (PluginObject*)instance->pdata; - if (obj) { - if (obj->testGetURLOnDestroy) - browser->geturlnotify(obj->npp, "about:blank", "", ""); - - if (obj->onStreamLoad) - free(obj->onStreamLoad); - - if (obj->onURLNotify) - free(obj->onURLNotify); - - if (obj->onStreamDestroy) - free(obj->onStreamDestroy); - - if (obj->onDestroy) { - executeScript(obj, obj->onDestroy); - free(obj->onDestroy); - } - - if (obj->logDestroy) - pluginLog(instance, "NPP_Destroy"); - - if (obj->onSetWindow) - free(obj->onSetWindow); - - browser->releaseobject(&obj->header); - } - return NPERR_NO_ERROR; -} - -NPError NPP_SetWindow(NPP instance, NPWindow *window) -{ - PluginObject* obj = static_cast<PluginObject*>(instance->pdata); - - if (obj) { - obj->lastWindow = *window; - - if (obj->onSetWindow) - executeScript(obj, obj->onSetWindow); - - if (obj->testWindowOpen) { - testWindowOpen(instance); - obj->testWindowOpen = FALSE; - } - } - - return NPERR_NO_ERROR; -} - -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, NPBool seekable, uint16_t *stype) -{ - PluginObject* obj = (PluginObject*)instance->pdata; - - if (obj->returnErrorFromNewStream) - return NPERR_GENERIC_ERROR; - - obj->stream = stream; - *stype = NP_ASFILEONLY; - - if (obj->onStreamLoad) - executeScript(obj, obj->onStreamLoad); - - return NPERR_NO_ERROR; -} - -NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason) -{ - PluginObject* obj = (PluginObject*)instance->pdata; - - if (obj->onStreamDestroy) - executeScript(obj, obj->onStreamDestroy); - - if (obj->testDocumentOpenInDestroyStream) { - testDocumentOpen(instance); - } - - return NPERR_NO_ERROR; -} - -int32_t NPP_WriteReady(NPP instance, NPStream *stream) -{ - return 0; -} - -int32_t NPP_Write(NPP instance, NPStream *stream, int32_t offset, int32_t len, void *buffer) -{ - return 0; -} - -void NPP_StreamAsFile(NPP instance, NPStream *stream, const char *fname) -{ -} - -void NPP_Print(NPP instance, NPPrint *platformPrint) -{ -} - -int16_t NPP_HandleEvent(NPP instance, void *event) -{ - PluginObject *obj = (PluginObject*)instance->pdata; - if (!obj->eventLogging) - return 0; - - // FIXME: Implement this - return 0; -} - -void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData) -{ - PluginObject *obj = (PluginObject*)instance->pdata; - - if (obj->onURLNotify) - executeScript(obj, obj->onURLNotify); - - handleCallback(obj, url, reason, notifyData); -} - -NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) -{ - if (variable == NPPVpluginScriptableNPObject) { - void **v = (void **)value; - PluginObject *obj = (PluginObject*)instance->pdata; - // Return value is expected to be retained - browser->retainobject((NPObject *)obj); - *v = obj; - return NPERR_NO_ERROR; - } - return NPERR_GENERIC_ERROR; -} - -NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) -{ - PluginObject* obj = static_cast<PluginObject*>(instance->pdata); - - switch (variable) { - case NPNVprivateModeBool: - obj->cachedPrivateBrowsingMode = *(NPBool*)value; - return NPERR_NO_ERROR; - default: - return NPERR_GENERIC_ERROR; - } -} diff --git a/WebKitTools/DumpRenderTree/win/UIDelegate.cpp b/WebKitTools/DumpRenderTree/win/UIDelegate.cpp index 519b9e1..1e7669f 100755 --- a/WebKitTools/DumpRenderTree/win/UIDelegate.cpp +++ b/WebKitTools/DumpRenderTree/win/UIDelegate.cpp @@ -180,6 +180,10 @@ HRESULT STDMETHODCALLTYPE UIDelegate::QueryInterface(REFIID riid, void** ppvObje *ppvObject = static_cast<IWebUIDelegate2*>(this); else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate)) *ppvObject = static_cast<IWebUIDelegatePrivate*>(this); + else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate2)) + *ppvObject = static_cast<IWebUIDelegatePrivate2*>(this); + else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate3)) + *ppvObject = static_cast<IWebUIDelegatePrivate3*>(this); else return E_NOINTERFACE; @@ -634,3 +638,25 @@ HRESULT STDMETHODCALLTYPE UIDelegate::desktopNotificationsDelegate(IWebDesktopNo m_desktopNotifications.copyRefTo(result); return S_OK; } + +HRESULT STDMETHODCALLTYPE UIDelegate::createWebViewWithRequest(IWebView* sender, IWebURLRequest* request, IPropertyBag* windowFeatures, IWebView** newWebView) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE UIDelegate::drawBackground(IWebView* sender, OLE_HANDLE hdc, const RECT* dirtyRect) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE UIDelegate::decidePolicyForGeolocationRequest(IWebView* sender, IWebFrame* frame, IWebSecurityOrigin* origin, IWebGeolocationPolicyListener* listener) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE UIDelegate::didPressMissingPluginButton(IDOMElement* element) +{ + printf("MISSING PLUGIN BUTTON PRESSED\n"); + return S_OK; +} + diff --git a/WebKitTools/DumpRenderTree/win/UIDelegate.h b/WebKitTools/DumpRenderTree/win/UIDelegate.h index 436e31a..0c9fdaf 100755 --- a/WebKitTools/DumpRenderTree/win/UIDelegate.h +++ b/WebKitTools/DumpRenderTree/win/UIDelegate.h @@ -37,7 +37,7 @@ class DRTUndoManager; class DRTDesktopNotificationPresenter; -class UIDelegate : public IWebUIDelegate2, IWebUIDelegatePrivate { +class UIDelegate : public IWebUIDelegate2, IWebUIDelegatePrivate3 { public: UIDelegate(); @@ -325,6 +325,14 @@ public: /* [in] */ HDC hDC, /* [in] */ RECT rect); + virtual HRESULT STDMETHODCALLTYPE createWebViewWithRequest(IWebView* sender, IWebURLRequest* request, IPropertyBag* windowFeatures, IWebView** newWebView); + + virtual HRESULT STDMETHODCALLTYPE drawBackground(IWebView* sender, OLE_HANDLE hdc, const RECT* dirtyRect); + + virtual HRESULT STDMETHODCALLTYPE decidePolicyForGeolocationRequest(IWebView* sender, IWebFrame* frame, IWebSecurityOrigin* origin, IWebGeolocationPolicyListener* listener); + + virtual HRESULT STDMETHODCALLTYPE didPressMissingPluginButton(IDOMElement*); + protected: // IWebUIDelegatePrivate diff --git a/WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp b/WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp index 511eb81..905463a 100644 --- a/WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp +++ b/WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp @@ -327,12 +327,12 @@ void LayoutTestController::overridePreference(JSStringRef /* key */, JSStringRef // FIXME: implement } -void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart) +void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart, bool allFrames) { printf("LayoutTestController::addUserScript not implemented.\n"); } -void LayoutTestController::addUserStyleSheet(JSStringRef source) +void LayoutTestController::addUserStyleSheet(JSStringRef source, bool allFrames) { printf("LayoutTestController::addUserStyleSheet not implemented.\n"); } @@ -458,7 +458,8 @@ void LayoutTestController::abortModal() JSRetainPtr<JSStringRef> LayoutTestController::pageProperty(const char* propertyName, int pageNumber) const { - + // FIXME: Implement + return 0; } bool LayoutTestController::isPageBoxVisible(int pageNumber) const |