Commit 3469b9f8 authored by ap@apple.com's avatar ap@apple.com

[Mac] Add tests for secure event input

        https://bugs.webkit.org/show_bug.cgi?id=116121

        Reviewed by Mark Rowe.

        * editing/secure-input: Added.
        * editing/secure-input/password-input-changed-type-expected.txt: Added.
        * editing/secure-input/password-input-changed-type.html: Added.
        * editing/secure-input/password-input-focusing-expected.txt: Added.
        * editing/secure-input/password-input-focusing-to-different-frame-expected.txt: Added.
        * editing/secure-input/password-input-focusing-to-different-frame.html: Added.
        * editing/secure-input/password-input-focusing.html: Added.
        * editing/secure-input/removed-password-input-expected.txt: Added.
        * editing/secure-input/removed-password-input.html: Added.
        * editing/secure-input/reset-state-on-navigation-expected.txt: Added.
        * editing/secure-input/reset-state-on-navigation.html: Added.
        * editing/secure-input/resources: Added.
        * editing/secure-input/resources/reset-state-on-navigation-target.html: Added.
        * platform/efl/TestExpectations:
        * platform/gtk/TestExpectations:
        * platform/mac-wk2/TestExpectations:
        * platform/mac/TestExpectations:
        * platform/qt/TestExpectations:
        * platform/win/TestExpectations:
        * platform/wincairo/TestExpectations:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@150090 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent f8a623d2
2013-05-14 Alexey Proskuryakov <ap@apple.com>
[Mac] Add tests for secure event input
https://bugs.webkit.org/show_bug.cgi?id=116121
Reviewed by Mark Rowe.
* editing/secure-input: Added.
* editing/secure-input/password-input-changed-type-expected.txt: Added.
* editing/secure-input/password-input-changed-type.html: Added.
* editing/secure-input/password-input-focusing-expected.txt: Added.
* editing/secure-input/password-input-focusing-to-different-frame-expected.txt: Added.
* editing/secure-input/password-input-focusing-to-different-frame.html: Added.
* editing/secure-input/password-input-focusing.html: Added.
* editing/secure-input/removed-password-input-expected.txt: Added.
* editing/secure-input/removed-password-input.html: Added.
* editing/secure-input/reset-state-on-navigation-expected.txt: Added.
* editing/secure-input/reset-state-on-navigation.html: Added.
* editing/secure-input/resources: Added.
* editing/secure-input/resources/reset-state-on-navigation-target.html: Added.
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations:
* platform/qt/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:
2013-05-14 David Hyatt <hyatt@apple.com>
REGRESSION (r147261): Many overlaid elements on united.com's account page
......
Verify that changing a password input's type updates secure input state.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
A password input is focused:
PASS testRunner.secureEventInputIsEnabled is true
After changing the type to text:
PASS testRunner.secureEventInputIsEnabled is false
After changing the type back to password:
PASS testRunner.secureEventInputIsEnabled is true
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<input type=password>
<script>
description("Verify that changing a password input's type updates secure input state.");
var passwordInput = document.getElementsByTagName("input")[0];
debug("A password input is focused:");
passwordInput.focus();
shouldBe("testRunner.secureEventInputIsEnabled", "true");
debug("\nAfter changing the type to text:");
passwordInput.type = "text";
shouldBe("testRunner.secureEventInputIsEnabled", "false");
debug("\nAfter changing the type back to password:");
passwordInput.type = "password";
shouldBe("testRunner.secureEventInputIsEnabled", "true");
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
</body>
</html>
Verify that basic focusing/unfocusing updates secure input state.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
Initial state, no selection:
PASS testRunner.secureEventInputIsEnabled is false
A password input is focused:
PASS testRunner.secureEventInputIsEnabled is true
A regular text input is focused:
PASS testRunner.secureEventInputIsEnabled is false
A password input is focused again:
PASS testRunner.secureEventInputIsEnabled is true
PASS successfullyParsed is true
TEST COMPLETE
Verify that changing focus to a different frame updates secure input state.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
Initial state, no selection:
PASS testRunner.secureEventInputIsEnabled is false
A password input is focused:
PASS document.activeElement is passwordInput
PASS testRunner.secureEventInputIsEnabled is true
A regular text input is focused with a mouse click:
PASS frames[0].document.activeElement is textInput
PASS testRunner.secureEventInputIsEnabled is false
A password input is focused again with a mouse click:
PASS document.activeElement is passwordInput
PASS testRunner.secureEventInputIsEnabled is true
A regular text input is focused with a tab:
PASS frames[0].document.activeElement is textInput
PASS testRunner.secureEventInputIsEnabled is false
A password input is focused again with a tab:
PASS document.activeElement is passwordInput
PASS testRunner.secureEventInputIsEnabled is true
Focus is made empty:
PASS document.activeElement is document.body
PASS testRunner.secureEventInputIsEnabled is false
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<input type=password>
<iframe srcdoc="<input type=text>"></iframe>
<script>
description("Verify that changing focus to a different frame updates secure input state.");
jsTestIsAsync = true;
window.onload = function() {
passwordInput = document.getElementsByTagName("input")[0];
iframeElement = document.getElementsByTagName("iframe")[0];
textInput = frames[0].document.getElementsByTagName("input")[0];
debug("Initial state, no selection:");
shouldBe("testRunner.secureEventInputIsEnabled", "false");
debug("\nA password input is focused:");
passwordInput.focus();
shouldBe("document.activeElement", "passwordInput");
shouldBe("testRunner.secureEventInputIsEnabled", "true");
debug("\nA regular text input is focused with a mouse click:");
eventSender.mouseMoveTo(iframeElement.offsetLeft + textInput.offsetLeft + 5, iframeElement.offsetTop + textInput.offsetTop + 5);
eventSender.mouseDown(0);
eventSender.mouseUp(0);
shouldBe("frames[0].document.activeElement", "textInput");
shouldBe("testRunner.secureEventInputIsEnabled", "false");
debug("\nA password input is focused again with a mouse click:");
eventSender.mouseMoveTo(passwordInput.offsetLeft + 5, passwordInput.offsetTop + 5);
eventSender.mouseDown(0);
eventSender.mouseUp(0);
shouldBe("document.activeElement", "passwordInput");
shouldBe("testRunner.secureEventInputIsEnabled", "true");
debug("\nA regular text input is focused with a tab:");
eventSender.keyDown("\t");
shouldBe("frames[0].document.activeElement", "textInput");
shouldBe("testRunner.secureEventInputIsEnabled", "false");
debug("\nA password input is focused again with a tab:");
eventSender.keyDown("\t", ["Shift"]);
shouldBe("document.activeElement", "passwordInput");
shouldBe("testRunner.secureEventInputIsEnabled", "true");
debug("\nFocus is made empty:");
eventSender.mouseMoveTo(1, 1);
eventSender.mouseDown(0);
eventSender.mouseUp(0);
shouldBe("document.activeElement", "document.body");
shouldBe("testRunner.secureEventInputIsEnabled", "false");
finishJSTest();
}
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<input type=password>
<input type=text>
<script>
description("Verify that basic focusing/unfocusing updates secure input state.");
var passwordInput = document.getElementsByTagName("input")[0];
var textInput = document.getElementsByTagName("input")[1];
debug("Initial state, no selection:");
shouldBe("testRunner.secureEventInputIsEnabled", "false");
debug("\nA password input is focused:");
passwordInput.focus();
shouldBe("testRunner.secureEventInputIsEnabled", "true");
debug("\nA regular text input is focused:");
textInput.focus();
shouldBe("testRunner.secureEventInputIsEnabled", "false");
debug("\nA password input is focused again:");
passwordInput.focus();
shouldBe("testRunner.secureEventInputIsEnabled", "true");
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
</body>
</html>
Verify that removing a password input from DOM tree disables secure input state.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
A password input is focused:
PASS testRunner.secureEventInputIsEnabled is true
After deleting the input:
FAIL testRunner.secureEventInputIsEnabled should be false. Was true.
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<input type=password>
<script>
description("Verify that removing a password input from DOM tree disables secure input state.");
var passwordInput = document.getElementsByTagName("input")[0];
debug("A password input is focused:");
passwordInput.focus();
shouldBe("testRunner.secureEventInputIsEnabled", "true");
debug("\nAfter deleting the input:");
document.body.removeChild(passwordInput);
shouldBe("testRunner.secureEventInputIsEnabled", "false");
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
</body>
</html>
Verify that secure input state is disabled when navigating away from a page with a focused password field.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS testRunner.secureEventInputIsEnabled is false
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE html>
<html>
<body>
<input type=password>
<script>
if (window.testRunner)
testRunner.waitUntilDone();
var passwordInput = document.getElementsByTagName("input")[0];
passwordInput.focus();
if (!testRunner.secureEventInputIsEnabled)
alert("FAIL: Secure event input is not enabled after focusing a password input");
location = "resources/reset-state-on-navigation-target.html";
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<input type=password>
<script>
description("Verify that secure input state is disabled when navigating away from a page with a focused password field.");
var passwordInput = document.getElementsByTagName("input")[0];
shouldBe("testRunner.secureEventInputIsEnabled", "false");
if (window.testRunner)
testRunner.notifyDone();
</script>
<script src="../../../fast/js/resources/js-test-post.js"></script>
</body>
</html>
......@@ -608,6 +608,9 @@ webkit.org/b/100519 fast/images/paletted-png-with-color-profile.html [ Skip ]
webkit.org/b/105542 fast/canvas/canvas-blend-image.html [ Skip ]
webkit.org/b/105542 fast/canvas/canvas-blend-solid.html [ Skip ]
# No concept of secure text input
editing/secure-input [ Failure ]
#////////////////////////////////////////////////////////////////////////////////////////
# CRASHES
#////////////////////////////////////////////////////////////////////////////////////////
......
......@@ -415,6 +415,9 @@ Bug(GTK) [ Debug ] perf [ Skip ]
webkit.org/b/115374 editing/shadow [ Skip ]
webkit.org/b/115374 fast/dom/shadow [ Skip ]
# No concept of secure text input
editing/secure-input [ Failure ]
#////////////////////////////////////////////////////////////////////////////////////////
# End of Expected failures
#////////////////////////////////////////////////////////////////////////////////////////
......
......@@ -314,6 +314,9 @@ fast/workers/worker-cloneport.html
sputnik/Unicode/Unicode_218/S7.6_A2.4.html
sputnik/Unicode/Unicode_218/S7.6_A5.2_T1.html
# Unclear yet why this test fails.
editing/secure-input/password-input-focusing-to-different-frame.html [ Failure ]
### END OF (3) Unclassified failures
########################################
......@@ -331,6 +334,9 @@ sputnik/Unicode/Unicode_218/S7.6_A5.2_T1.html
# Temporarily disabled while working out compositing failures
plugins/snapshotting [ Skip ]
# This test fails with WebKit1 only.
editing/secure-input/reset-state-on-navigation.html [ Pass ]
### END OF (5) Features that are not supported in WebKit1, so skipped in mac/TestExpectations then re-enabled here
########################################
......@@ -1535,3 +1535,34 @@ webkit.org/b/115292 fast/writing-mode/japanese-ruby-vertical-lr.html
webkit.org/b/115292 fast/writing-mode/japanese-ruby-vertical-rl.html
webkit.org/b/115292 fast/writing-mode/vertical-baseline-alignment.html
webkit.org/b/115292 fast/writing-mode/vertical-font-fallback.html
# Fails with WebKit1 only.
editing/secure-input/reset-state-on-navigation.html [ Failure ]
# Needs rebaseline after bug https://bugs.webkit.org/show_bug.cgi?id=52185
webkit.org/b/52185 fast/table/007.html [ Failure Rebaseline ]
webkit.org/b/52185 fast/table/colspanMinWidth.html [ Failure Rebaseline ]
webkit.org/b/52185 fast/table/colspanMinWidth-vertical.html [ Failure Rebaseline ]
webkit.org/b/52185 fast/table/spanOverlapRepaint.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug13169.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug133756-1.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug133756-2.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug17138.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug17548.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug220536.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug6304.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug73321.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug7714.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug86708.html [ ImageOnlyFailure Rebaseline ]
webkit.org/b/52185 tables/mozilla/bugs/bug8858.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/core/bloomberg.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/core/cell_heights.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla/other/test6.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug1010.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug131020-3.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug23847.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug65372.html [ Failure Rebaseline ]
webkit.org/b/52185 tables/mozilla_expected_failures/bugs/bug6933.html [ Failure Rebaseline ]
webkit.org/b/52185 accessibility/table-cells.html [ Failure Rebaseline ]
webkit.org/b/52185 accessibility/table-attributes.html [ Failure Rebaseline ]
......@@ -496,6 +496,9 @@ fast/dom/MutationObserver/inline-event-listener.html
# X-Content-Type-Options (ENABLE_NOSNIFF) is not enabled.
http/tests/security/contentTypeOptions
# No concept of secure text input other than on Mac; support not yet implemented on Mac.
editing/secure-input [ Failure ]
# =========================================================================== #
# Drag and Drop Support in DRT. #
# =========================================================================== #
......
......@@ -2742,3 +2742,6 @@ compositing/contents-opaque/control-layer.html
compositing/filters/sw-layer-overlaps-hw-shadow.html
compositing/filters/sw-shadow-overlaps-hw-layer.html
compositing/filters/sw-shadow-overlaps-hw-shadow.html
# No concept of secure text input
editing/secure-input [ Failure ]
......@@ -2989,3 +2989,6 @@ webkit.org/b/108370 editing/spelling/spelling-with-whitespace-selection.html [ S
# Need support for ResourceHandle::didChangePriority and DRT support
webkit.org/b/?????? http/tests/loading/promote-img-preload-priority.html [ Failure ]
# No concept of secure text input
editing/secure-input [ Failure ]
2013-05-14 Alexey Proskuryakov <ap@apple.com>
[Mac] Add tests for secure event input
https://bugs.webkit.org/show_bug.cgi?id=116121
Reviewed by Mark Rowe.
* DumpRenderTree/TestRunner.cpp:
(getSecureEventInputIsEnabledCallback):
(TestRunner::staticValues):
Expose an accessor for current secure event input state.
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::secureEventInputIsEnabled):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
Expose an accessor for current secure event input state. This has to be done in
UI process, as this is where it's changed by WebKit.
2013-05-14 Alexey Proskuryakov <ap@apple.com>
[Mac] Add a testing shim for secure event input functions
......
......@@ -44,6 +44,10 @@
#include <wtf/OwnArrayPtr.h>
#include <wtf/RefPtr.h>
#if PLATFORM(MAC)
#include <Carbon/Carbon.h>
#endif
const unsigned TestRunner::viewWidth = 800;
const unsigned TestRunner::viewHeight = 600;
......@@ -1834,6 +1838,11 @@ static JSValueRef getPlatformNameCallback(JSContextRef context, JSObjectRef this
}
#endif
static JSValueRef getSecureEventInputIsEnabledCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
return JSValueMakeBoolean(context, IsSecureEventInputEnabled());
}
static JSValueRef getTitleTextDirectionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
......@@ -2001,6 +2010,7 @@ JSStaticValue* TestRunner::staticValues()
#if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(WIN) || PLATFORM(EFL)
{ "platformName", getPlatformNameCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
#endif
{ "secureEventInputIsEnabled", getSecureEventInputIsEnabledCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "titleTextDirection", getTitleTextDirectionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ 0, 0, 0, 0 }
};
......
......@@ -187,5 +187,8 @@ interface TestRunner {
void setHandlesAuthenticationChallenges(boolean value);
void setAuthenticationUsername(DOMString username);
void setAuthenticationPassword(DOMString password);
// Secure text input mode (Mac only)
readonly attribute boolean secureEventInputIsEnabled;
};
......@@ -803,4 +803,13 @@ void TestRunner::setAuthenticationPassword(JSStringRef password)
WKBundlePostMessage(InjectedBundle::shared().bundle(), messageName.get(), messageBody.get());
}
bool TestRunner::secureEventInputIsEnabled() const
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SecureEventInputIsEnabled"));
WKTypeRef returnData = 0;
WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), messageName.get(), 0, &returnData);
return WKBooleanGetValue(static_cast<WKBooleanRef>(returnData));
}
} // namespace WTR
......@@ -273,6 +273,8 @@ public:
void queueLoadingScript(JSStringRef script);
void queueNonLoadingScript(JSStringRef script);
bool secureEventInputIsEnabled() const;
private:
static const double waitToDumpWatchdogTimerInterval;
......
......@@ -43,6 +43,7 @@
#include <wtf/text/CString.h>
#if PLATFORM(MAC)
#include <Carbon/Carbon.h>
#include <WebKit2/WKPagePrivateMac.h>
#endif
......@@ -663,6 +664,14 @@ WKRetainPtr<WKTypeRef> TestInvocation::didReceiveSynchronousMessageFromInjectedB
return result;
}
if (WKStringIsEqualToUTF8CString(messageName, "SecureEventInputIsEnabled")) {
#if PLATFORM(MAC)
WKRetainPtr<WKBooleanRef> result(AdoptWK, WKBooleanCreate(IsSecureEventInputEnabled()));
#else
WKRetainPtr<WKBooleanRef> result(AdoptWK, WKBooleanCreate(false);
#endif
return result;
}
ASSERT_NOT_REACHED();
return 0;
}
......
......@@ -85,6 +85,7 @@
BCD7D2F811921278006DB7EE /* TestInvocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD7D2F711921278006DB7EE /* TestInvocation.cpp */; };
BCDA2B9A1191051F00C3BC47 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */; };
C0CE720B1247C93300BC0EC4 /* TestRunnerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0CE720A1247C93300BC0EC4 /* TestRunnerMac.mm */; };
E1BA671E1742DA6A00C20251 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1BA671D1742DA5A00C20251 /* Carbon.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
......@@ -218,6 +219,7 @@
BCD7D2F711921278006DB7EE /* TestInvocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestInvocation.cpp; sourceTree = "<group>"; };
BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C0CE720A1247C93300BC0EC4 /* TestRunnerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TestRunnerMac.mm; path = mac/TestRunnerMac.mm; sourceTree = "<group>"; };
E1BA671D1742DA5A00C20251 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -228,6 +230,7 @@
BC7934A511906584005EA8E2 /* Cocoa.framework in Frameworks */,
BCDA2B9A1191051F00C3BC47 /* JavaScriptCore.framework in Frameworks */,
0F5169CB1445222D00E0A9D7 /* WebKit.framework in Frameworks */,
E1BA671E1742DA6A00C20251 /* Carbon.framework in Frameworks */,
BC7934AC1190658C005EA8E2 /* WebKit2.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
......@@ -291,6 +294,7 @@
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
E1BA671D1742DA5A00C20251 /* Carbon.framework */,
BC7934A411906584005EA8E2 /* Cocoa.framework */,
BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */,
41230E16138C78BF00BCCFCA /* libWebCoreTestSupport.dylib */,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment