<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[190017] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/190017">190017</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2015-09-19 14:37:09 -0700 (Sat, 19 Sep 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Get rid of most custom bindings for Location.idl
https://bugs.webkit.org/show_bug.cgi?id=149370
Reviewed by Darin Adler.
Get rid of most custom bindings for Location.idl by extending support
for the [CallWith=XXX] IDL extended attribute to support 2 additional
values: ActiveWindow and FirstWindow. Also introduce a
[SetterCallWith=XXX] alternative that passes the extra arguments to
the attribute setter only, as is needed by the Location attributes.
No new tests, no intended web-exposed behavior change.
* bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
* bindings/scripts/test/GObject/WebKitDOMTestObj.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
* bindings/scripts/test/TestObj.idl:
Add bindings tests coverage for [SetterCallWith=XXX].
* page/Location.idl:
Also drop [DoNotCheckSecurityOnSetter] on href attribute. It has
no effet as the interface does not have [CheckSecurity].</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSLocationCustomcpp">trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsIDLAttributestxt">trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm">trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestTestObjidl">trunk/Source/WebCore/bindings/scripts/test/TestObj.idl</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowcpp">trunk/Source/WebCore/page/DOMWindow.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowh">trunk/Source/WebCore/page/DOMWindow.h</a></li>
<li><a href="#trunkSourceWebCorepageLocationcpp">trunk/Source/WebCore/page/Location.cpp</a></li>
<li><a href="#trunkSourceWebCorepageLocationh">trunk/Source/WebCore/page/Location.h</a></li>
<li><a href="#trunkSourceWebCorepageLocationidl">trunk/Source/WebCore/page/Location.idl</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/ChangeLog        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -1,5 +1,32 @@
</span><span class="cx"> 2015-09-19 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><ins>+ Get rid of most custom bindings for Location.idl
+ https://bugs.webkit.org/show_bug.cgi?id=149370
+
+ Reviewed by Darin Adler.
+
+ Get rid of most custom bindings for Location.idl by extending support
+ for the [CallWith=XXX] IDL extended attribute to support 2 additional
+ values: ActiveWindow and FirstWindow. Also introduce a
+ [SetterCallWith=XXX] alternative that passes the extra arguments to
+ the attribute setter only, as is needed by the Location attributes.
+
+ No new tests, no intended web-exposed behavior change.
+
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
+ * bindings/scripts/test/GObject/WebKitDOMTestObj.h:
+ * bindings/scripts/test/JS/JSTestObj.cpp:
+ * bindings/scripts/test/ObjC/DOMTestObj.h:
+ * bindings/scripts/test/ObjC/DOMTestObj.mm:
+ * bindings/scripts/test/TestObj.idl:
+ Add bindings tests coverage for [SetterCallWith=XXX].
+
+ * page/Location.idl:
+ Also drop [DoNotCheckSecurityOnSetter] on href attribute. It has
+ no effet as the interface does not have [CheckSecurity].
+
+2015-09-19 Chris Dumez <cdumez@apple.com>
+
</ins><span class="cx"> Get rid of custom bindings for Document.location getter
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=149369
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -488,7 +488,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (Location* location = impl().location())
</span><del>- location->setHref(locationString, activeDOMWindow(exec), firstDOMWindow(exec));
</del><ins>+ location->setHref(activeDOMWindow(exec), firstDOMWindow(exec), locationString);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSDOMWindow::event(ExecState* exec) const
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -50,6 +50,7 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+// FIXME: Require support for [PutForward=XXX] Web IDL extended attribute.
</ins><span class="cx"> void JSDocument::setLocation(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><span class="cx"> String locationString = value.toString(exec)->value(exec);
</span><span class="lines">@@ -61,7 +62,7 @@
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> if (RefPtr<Location> location = frame->document()->domWindow()->location())
</span><del>- location->setHref(locationString, activeDOMWindow(exec), firstDOMWindow(exec));
</del><ins>+ location->setHref(activeDOMWindow(exec), firstDOMWindow(exec), locationString);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue createNewDocumentWrapper(ExecState& state, JSDOMGlobalObject& globalObject, Document& document)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSLocationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -132,96 +132,6 @@
</span><span class="cx"> return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void JSLocation::setHref(ExecState* exec, JSValue value)
-{
- String href = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
- impl().setHref(href, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setProtocol(ExecState* exec, JSValue value)
-{
- String protocol = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
- ExceptionCode ec = 0;
- impl().setProtocol(protocol, activeDOMWindow(exec), firstDOMWindow(exec), ec);
- setDOMException(exec, ec);
-}
-
-void JSLocation::setHost(ExecState* exec, JSValue value)
-{
- String host = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
- impl().setHost(host, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setHostname(ExecState* exec, JSValue value)
-{
- String hostname = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
- impl().setHostname(hostname, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setPort(ExecState* exec, JSValue value)
-{
- String port = value.toWTFString(exec);
- if (exec->hadException())
- return;
- impl().setPort(port, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setPathname(ExecState* exec, JSValue value)
-{
- String pathname = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
- impl().setPathname(pathname, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setSearch(ExecState* exec, JSValue value)
-{
- String pathname = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
- impl().setSearch(pathname, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setHash(ExecState* exec, JSValue value)
-{
- String hash = value.toString(exec)->value(exec);
- if (exec->hadException())
- return;
- impl().setHash(hash, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-JSValue JSLocation::replace(ExecState* exec)
-{
- String urlString = exec->argument(0).toString(exec)->value(exec);
- if (exec->hadException())
- return jsUndefined();
- impl().replace(urlString, activeDOMWindow(exec), firstDOMWindow(exec));
- return jsUndefined();
-}
-
-JSValue JSLocation::reload(ExecState* exec)
-{
- impl().reload(activeDOMWindow(exec));
- return jsUndefined();
-}
-
-JSValue JSLocation::assign(ExecState* exec)
-{
- String urlString = exec->argument(0).toString(exec)->value(exec);
- if (exec->hadException())
- return jsUndefined();
- impl().assign(urlString, activeDOMWindow(exec), firstDOMWindow(exec));
- return jsUndefined();
-}
-
</del><span class="cx"> JSValue JSLocation::toStringFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> Frame* frame = impl().frame();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -2733,6 +2733,7 @@
</span><span class="cx"> $functionName = "impl.${functionName}";
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{"SetterCallWith"}, \@implContent, ""));
</ins><span class="cx"> unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{"CallWith"}, \@implContent, ""));
</span><span class="cx">
</span><span class="cx"> push(@arguments, "ec") if $setterRaisesException;
</span><span class="lines">@@ -3176,9 +3177,7 @@
</span><span class="cx"> my $function = shift;
</span><span class="cx">
</span><span class="cx"> my @callWithArgs;
</span><del>- if ($codeGenerator->ExtendedAttributeContains($callWith, "ScriptState")) {
- push(@callWithArgs, "exec");
- }
</del><ins>+ push(@callWithArgs, "exec") if $codeGenerator->ExtendedAttributeContains($callWith, "ScriptState");
</ins><span class="cx"> if ($codeGenerator->ExtendedAttributeContains($callWith, "ScriptExecutionContext")) {
</span><span class="cx"> push(@$outputArray, " auto* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();\n");
</span><span class="cx"> push(@$outputArray, " if (!scriptContext)\n");
</span><span class="lines">@@ -3191,6 +3190,9 @@
</span><span class="cx"> $implIncludes{"<inspector/ScriptCallStackFactory.h>"} = 1;
</span><span class="cx"> push(@callWithArgs, "scriptArguments.release()");
</span><span class="cx"> }
</span><ins>+ push(@callWithArgs, "activeDOMWindow(exec)") if $codeGenerator->ExtendedAttributeContains($callWith, "ActiveWindow");
+ push(@callWithArgs, "firstDOMWindow(exec)") if $codeGenerator->ExtendedAttributeContains($callWith, "FirstWindow");
+
</ins><span class="cx"> return @callWithArgs;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsIDLAttributestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx"> CachedAttribute
</span><span class="cx"> CallbackNeedsOperatorEqual
</span><span class="cx"> Callback=FunctionOnly
</span><del>-CallWith=ScriptExecutionContext|ScriptState|ScriptArguments|CallStack
</del><ins>+CallWith=ScriptExecutionContext|ScriptState|ScriptArguments|CallStack|ActiveWindow|FirstWindow
</ins><span class="cx"> CheckSecurity
</span><span class="cx"> CheckSecurityForNode
</span><span class="cx"> Clamp
</span><span class="lines">@@ -109,6 +109,7 @@
</span><span class="cx"> ReportExtraMemoryCost
</span><span class="cx"> RequiresExistingAtomicString
</span><span class="cx"> SetterRaisesException
</span><ins>+SetterCallWith=ScriptExecutionContext|ScriptState|ScriptArguments|CallStack|ActiveWindow|FirstWindow
</ins><span class="cx"> SkipVTableValidation
</span><span class="cx"> StrictTypeChecking
</span><span class="cx"> SuppressToJSObject
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -107,6 +107,7 @@
</span><span class="cx"> PROP_STRING_ATTR_WITH_SETTER_EXCEPTION,
</span><span class="cx"> PROP_STRICT_TYPE_CHECKING_ATTRIBUTE,
</span><span class="cx"> PROP_WITH_SCRIPT_STATE_ATTRIBUTE,
</span><ins>+ PROP_WITH_CALL_WITH_AND_SETTER_CALL_WITH_ATTRIBUTE,
</ins><span class="cx"> PROP_WITH_SCRIPT_EXECUTION_CONTEXT_ATTRIBUTE,
</span><span class="cx"> PROP_WITH_SCRIPT_STATE_ATTRIBUTE_RAISES,
</span><span class="cx"> PROP_WITH_SCRIPT_EXECUTION_CONTEXT_ATTRIBUTE_RAISES,
</span><span class="lines">@@ -220,6 +221,9 @@
</span><span class="cx"> case PROP_WITH_SCRIPT_STATE_ATTRIBUTE:
</span><span class="cx"> webkit_dom_test_obj_set_with_script_state_attribute(self, g_value_get_long(value));
</span><span class="cx"> break;
</span><ins>+ case PROP_WITH_CALL_WITH_AND_SETTER_CALL_WITH_ATTRIBUTE:
+ webkit_dom_test_obj_set_with_call_with_and_setter_call_with_attribute(self, g_value_get_long(value));
+ break;
</ins><span class="cx"> case PROP_CONDITIONAL_ATTR1:
</span><span class="cx"> webkit_dom_test_obj_set_conditional_attr1(self, g_value_get_long(value));
</span><span class="cx"> break;
</span><span class="lines">@@ -342,6 +346,9 @@
</span><span class="cx"> case PROP_WITH_SCRIPT_STATE_ATTRIBUTE:
</span><span class="cx"> g_value_set_long(value, webkit_dom_test_obj_get_with_script_state_attribute(self));
</span><span class="cx"> break;
</span><ins>+ case PROP_WITH_CALL_WITH_AND_SETTER_CALL_WITH_ATTRIBUTE:
+ g_value_set_long(value, webkit_dom_test_obj_get_with_call_with_and_setter_call_with_attribute(self));
+ break;
</ins><span class="cx"> case PROP_WITH_SCRIPT_EXECUTION_CONTEXT_ATTRIBUTE:
</span><span class="cx"> g_value_set_object(value, webkit_dom_test_obj_get_with_script_execution_context_attribute(self));
</span><span class="cx"> break;
</span><span class="lines">@@ -741,6 +748,16 @@
</span><span class="cx">
</span><span class="cx"> g_object_class_install_property(
</span><span class="cx"> gobjectClass,
</span><ins>+ PROP_WITH_CALL_WITH_AND_SETTER_CALL_WITH_ATTRIBUTE,
+ g_param_spec_long(
+ "with-call-with-and-setter-call-with-attribute",
+ "TestObj:with-call-with-and-setter-call-with-attribute",
+ "read-write glong TestObj:with-call-with-and-setter-call-with-attribute",
+ G_MINLONG, G_MAXLONG, 0,
+ WEBKIT_PARAM_READWRITE));
+
+ g_object_class_install_property(
+ gobjectClass,
</ins><span class="cx"> PROP_WITH_SCRIPT_EXECUTION_CONTEXT_ATTRIBUTE,
</span><span class="cx"> g_param_spec_object(
</span><span class="cx"> "with-script-execution-context-attribute",
</span><span class="lines">@@ -2045,6 +2062,23 @@
</span><span class="cx"> item->setWithScriptStateAttribute(value);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+glong webkit_dom_test_obj_get_with_call_with_and_setter_call_with_attribute(WebKitDOMTestObj* self)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_val_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self), 0);
+ WebCore::TestObj* item = WebKit::core(self);
+ glong result = item->withCallWithAndSetterCallWithAttribute();
+ return result;
+}
+
+void webkit_dom_test_obj_set_with_call_with_and_setter_call_with_attribute(WebKitDOMTestObj* self, glong value)
+{
+ WebCore::JSMainThreadNullState state;
+ g_return_if_fail(WEBKIT_DOM_IS_TEST_OBJ(self));
+ WebCore::TestObj* item = WebKit::core(self);
+ item->setWithCallWithAndSetterCallWithAttribute(value);
+}
+
</ins><span class="cx"> WebKitDOMTestObj* webkit_dom_test_obj_get_with_script_execution_context_attribute(WebKitDOMTestObj* self)
</span><span class="cx"> {
</span><span class="cx"> WebCore::JSMainThreadNullState state;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestGObjectWebKitDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -1213,6 +1213,27 @@
</span><span class="cx"> webkit_dom_test_obj_set_with_script_state_attribute(WebKitDOMTestObj* self, glong value);
</span><span class="cx">
</span><span class="cx"> /**
</span><ins>+ * webkit_dom_test_obj_get_with_call_with_and_setter_call_with_attribute:
+ * @self: A #WebKitDOMTestObj
+ *
+ * Returns: A #glong
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API glong
+webkit_dom_test_obj_get_with_call_with_and_setter_call_with_attribute(WebKitDOMTestObj* self);
+
+/**
+ * webkit_dom_test_obj_set_with_call_with_and_setter_call_with_attribute:
+ * @self: A #WebKitDOMTestObj
+ * @value: A #glong
+ *
+ * Stability: Unstable
+**/
+WEBKIT_API void
+webkit_dom_test_obj_set_with_call_with_and_setter_call_with_attribute(WebKitDOMTestObj* self, glong value);
+
+/**
</ins><span class="cx"> * webkit_dom_test_obj_get_with_script_execution_context_attribute:
</span><span class="cx"> * @self: A #WebKitDOMTestObj
</span><span class="cx"> *
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -238,6 +238,8 @@
</span><span class="cx"> void setJSTestObjOnfoo(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> void setJSTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><ins>+JSC::EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithCallWithAndSetterCallWithAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="cx"> void setJSTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</span><span class="cx"> JSC::EncodedJSValue jsTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</span><span class="lines">@@ -531,6 +533,7 @@
</span><span class="cx"> { "strictTypeCheckingAttribute", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStrictTypeCheckingAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStrictTypeCheckingAttribute) } },
</span><span class="cx"> { "onfoo", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOnfoo), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOnfoo) } },
</span><span class="cx"> { "withScriptStateAttribute", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttribute) } },
</span><ins>+ { "withCallWithAndSetterCallWithAttribute", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithCallWithAndSetterCallWithAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithCallWithAndSetterCallWithAttribute) } },
</ins><span class="cx"> { "withScriptExecutionContextAttribute", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttribute) } },
</span><span class="cx"> { "withScriptStateAttributeRaises", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttributeRaises) } },
</span><span class="cx"> { "withScriptExecutionContextAttributeRaises", DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttributeRaises) } },
</span><span class="lines">@@ -1327,6 +1330,23 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
+{
+ UNUSED_PARAM(exec);
+ UNUSED_PARAM(slotBase);
+ UNUSED_PARAM(thisValue);
+ JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
+ if (UNLIKELY(!castedThis)) {
+ if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
+ return reportDeprecatedGetterError(*exec, "TestObj", "withCallWithAndSetterCallWithAttribute");
+ return throwGetterTypeError(*exec, "TestObj", "withCallWithAndSetterCallWithAttribute");
+ }
+ auto& impl = castedThis->impl();
+ JSValue result = jsNumber(impl.withCallWithAndSetterCallWithAttribute(exec));
+ return JSValue::encode(result);
+}
+
+
</ins><span class="cx"> EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> UNUSED_PARAM(exec);
</span><span class="lines">@@ -2550,6 +2570,26 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><ins>+void setJSTestObjWithCallWithAndSetterCallWithAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
+{
+ JSValue value = JSValue::decode(encodedValue);
+ UNUSED_PARAM(baseObject);
+ JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
+ if (UNLIKELY(!castedThis)) {
+ if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
+ reportDeprecatedSetterError(*exec, "TestObj", "withCallWithAndSetterCallWithAttribute");
+ else
+ throwSetterTypeError(*exec, "TestObj", "withCallWithAndSetterCallWithAttribute");
+ return;
+ }
+ auto& impl = castedThis->impl();
+ int nativeValue = toInt32(exec, value, NormalConversion);
+ if (UNLIKELY(exec->hadException()))
+ return;
+ impl.setWithCallWithAndSetterCallWithAttribute(exec, activeDOMWindow(exec), firstDOMWindow(exec), nativeValue);
+}
+
+
</ins><span class="cx"> void setJSTestObjWithScriptExecutionContextAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -91,6 +91,7 @@
</span><span class="cx"> @property (strong) DOMTestObj *strictTypeCheckingAttribute;
</span><span class="cx"> @property int customAttr;
</span><span class="cx"> @property int withScriptStateAttribute;
</span><ins>+@property int withCallWithAndSetterCallWithAttribute;
</ins><span class="cx"> @property (strong) DOMTestObj *withScriptExecutionContextAttribute;
</span><span class="cx"> @property (strong) DOMTestObj *withScriptStateAttributeRaises;
</span><span class="cx"> @property (strong) DOMTestObj *withScriptExecutionContextAttributeRaises;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestObjCDOMTestObjmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -462,6 +462,18 @@
</span><span class="cx"> IMPL->setWithScriptStateAttribute(newWithScriptStateAttribute);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+- (int)withCallWithAndSetterCallWithAttribute
+{
+ WebCore::JSMainThreadNullState state;
+ return IMPL->withCallWithAndSetterCallWithAttribute();
+}
+
+- (void)setWithCallWithAndSetterCallWithAttribute:(int)newWithCallWithAndSetterCallWithAttribute
+{
+ WebCore::JSMainThreadNullState state;
+ IMPL->setWithCallWithAndSetterCallWithAttribute(newWithCallWithAndSetterCallWithAttribute);
+}
+
</ins><span class="cx"> - (DOMTestObj *)withScriptExecutionContextAttribute
</span><span class="cx"> {
</span><span class="cx"> WebCore::JSMainThreadNullState state;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestTestObjidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/TestObj.idl (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/bindings/scripts/test/TestObj.idl        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -132,6 +132,7 @@
</span><span class="cx"> [CallWith=ScriptArguments&CallStack] void withScriptArgumentsAndCallStack();
</span><span class="cx">
</span><span class="cx"> [CallWith=ScriptState] attribute long withScriptStateAttribute;
</span><ins>+ [CallWith=ScriptState, SetterCallWith=ActiveWindow&FirstWindow] attribute long withCallWithAndSetterCallWithAttribute;
</ins><span class="cx"> [CallWith=ScriptExecutionContext] attribute TestObj withScriptExecutionContextAttribute;
</span><span class="cx"> [CallWith=ScriptState, GetterRaisesException] attribute TestObj withScriptStateAttributeRaises;
</span><span class="cx"> [CallWith=ScriptExecutionContext, GetterRaisesException] attribute TestObj withScriptExecutionContextAttributeRaises;
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.cpp (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.cpp        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/page/DOMWindow.cpp        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -1965,7 +1965,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void DOMWindow::setLocation(const String& urlString, DOMWindow& activeWindow, DOMWindow& firstWindow, SetLocationLocking locking)
</del><ins>+void DOMWindow::setLocation(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& urlString, SetLocationLocking locking)
</ins><span class="cx"> {
</span><span class="cx"> if (!isCurrentlyDisplayedInFrame())
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.h (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.h        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/page/DOMWindow.h        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx"> Navigator* clientInformation() const { return navigator(); }
</span><span class="cx">
</span><span class="cx"> Location* location() const;
</span><del>- void setLocation(const String& location, DOMWindow& activeWindow, DOMWindow& firstWindow,
</del><ins>+ void setLocation(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& location,
</ins><span class="cx"> SetLocationLocking = LockHistoryBasedOnGestureState);
</span><span class="cx">
</span><span class="cx"> DOMSelection* getSelection();
</span></span></pre></div>
<a id="trunkSourceWebCorepageLocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Location.cpp (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Location.cpp        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/page/Location.cpp        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -143,14 +143,14 @@
</span><span class="cx"> return fragmentIdentifier.isEmpty() ? emptyString() : "#" + fragmentIdentifier;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setHref(const String& url, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setHref(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& url)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><del>- setLocation(url, activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setProtocol(const String& protocol, DOMWindow& activeWindow, DOMWindow& firstWindow, ExceptionCode& ec)
</del><ins>+void Location::setProtocol(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& protocol, ExceptionCode& ec)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="lines">@@ -159,28 +159,28 @@
</span><span class="cx"> ec = SYNTAX_ERR;
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- setLocation(url.string(), activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url.string());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setHost(const String& host, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setHost(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& host)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="cx"> URL url = m_frame->document()->url();
</span><span class="cx"> url.setHostAndPort(host);
</span><del>- setLocation(url.string(), activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url.string());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setHostname(const String& hostname, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setHostname(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& hostname)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="cx"> URL url = m_frame->document()->url();
</span><span class="cx"> url.setHost(hostname);
</span><del>- setLocation(url.string(), activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url.string());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setPort(const String& portString, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setPort(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& portString)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="lines">@@ -190,28 +190,28 @@
</span><span class="cx"> url.removePort();
</span><span class="cx"> else
</span><span class="cx"> url.setPort(port);
</span><del>- setLocation(url.string(), activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url.string());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setPathname(const String& pathname, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setPathname(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& pathname)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="cx"> URL url = m_frame->document()->url();
</span><span class="cx"> url.setPath(pathname);
</span><del>- setLocation(url.string(), activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url.string());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setSearch(const String& search, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setSearch(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& search)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="cx"> URL url = m_frame->document()->url();
</span><span class="cx"> url.setQuery(search);
</span><del>- setLocation(url.string(), activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url.string());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setHash(const String& hash, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setHash(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& hash)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="lines">@@ -226,22 +226,22 @@
</span><span class="cx"> // cases where fragment identifiers are ignored or invalid.
</span><span class="cx"> if (equalIgnoringNullity(oldFragmentIdentifier, url.fragmentIdentifier()))
</span><span class="cx"> return;
</span><del>- setLocation(url.string(), activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url.string());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::assign(const String& url, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::assign(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& url)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><del>- setLocation(url, activeWindow, firstWindow);
</del><ins>+ setLocation(activeWindow, firstWindow, url);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::replace(const String& url, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::replace(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& url)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_frame)
</span><span class="cx"> return;
</span><span class="cx"> // Note: We call DOMWindow::setLocation directly here because replace() always operates on the current frame.
</span><del>- m_frame->document()->domWindow()->setLocation(url, activeWindow, firstWindow, LockHistoryAndBackForwardList);
</del><ins>+ m_frame->document()->domWindow()->setLocation(activeWindow, firstWindow, url, LockHistoryAndBackForwardList);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void Location::reload(DOMWindow& activeWindow)
</span><span class="lines">@@ -261,13 +261,13 @@
</span><span class="cx"> m_frame->navigationScheduler().scheduleRefresh(activeWindow.document());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Location::setLocation(const String& url, DOMWindow& activeWindow, DOMWindow& firstWindow)
</del><ins>+void Location::setLocation(DOMWindow& activeWindow, DOMWindow& firstWindow, const String& url)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(m_frame);
</span><span class="cx"> Frame* frame = m_frame->loader().findFrameForNavigation(String(), activeWindow.document());
</span><span class="cx"> if (!frame)
</span><span class="cx"> return;
</span><del>- frame->document()->domWindow()->setLocation(url, activeWindow, firstWindow);
</del><ins>+ frame->document()->domWindow()->setLocation(activeWindow, firstWindow, url);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorepageLocationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Location.h (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Location.h        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/page/Location.h        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -48,26 +48,26 @@
</span><span class="cx"> public:
</span><span class="cx"> static Ref<Location> create(Frame* frame) { return adoptRef(*new Location(frame)); }
</span><span class="cx">
</span><del>- void setHref(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setHref(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> String href() const;
</span><span class="cx">
</span><del>- void assign(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
- void replace(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void assign(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
+ void replace(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> void reload(DOMWindow& activeWindow);
</span><span class="cx">
</span><del>- void setProtocol(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow, ExceptionCode&);
</del><ins>+ void setProtocol(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&, ExceptionCode&);
</ins><span class="cx"> String protocol() const;
</span><del>- void setHost(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setHost(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> String host() const;
</span><del>- void setHostname(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setHostname(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> String hostname() const;
</span><del>- void setPort(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setPort(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> String port() const;
</span><del>- void setPathname(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setPathname(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> String pathname() const;
</span><del>- void setSearch(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setSearch(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> String search() const;
</span><del>- void setHash(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setHash(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx"> String hash() const;
</span><span class="cx"> String origin() const;
</span><span class="cx">
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx"> private:
</span><span class="cx"> explicit Location(Frame*);
</span><span class="cx">
</span><del>- void setLocation(const String&, DOMWindow& activeWindow, DOMWindow& firstWindow);
</del><ins>+ void setLocation(DOMWindow& activeWindow, DOMWindow& firstWindow, const String&);
</ins><span class="cx">
</span><span class="cx"> const URL& url() const;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorepageLocationidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Location.idl (190016 => 190017)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Location.idl        2015-09-19 21:05:47 UTC (rev 190016)
+++ trunk/Source/WebCore/page/Location.idl        2015-09-19 21:37:09 UTC (rev 190017)
</span><span class="lines">@@ -37,20 +37,20 @@
</span><span class="cx"> JSCustomDefineOwnPropertyOnPrototype,
</span><span class="cx"> Unforgeable
</span><span class="cx"> ] interface Location {
</span><del>- [DoNotCheckSecurityOnSetter, CustomSetter] attribute DOMString href;
</del><ins>+ [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString href;
</ins><span class="cx">
</span><del>- [Custom, ForwardDeclareInHeader] void assign([Default=Undefined] optional DOMString url);
- [Custom, ForwardDeclareInHeader] void replace([Default=Undefined] optional DOMString url);
- [Custom, ForwardDeclareInHeader] void reload();
</del><ins>+ [CallWith=ActiveWindow&FirstWindow, ForwardDeclareInHeader] void assign([Default=Undefined] optional DOMString url);
+ [CallWith=ActiveWindow&FirstWindow, ForwardDeclareInHeader] void replace([Default=Undefined] optional DOMString url);
+ [CallWith=ActiveWindow, ForwardDeclareInHeader] void reload();
</ins><span class="cx">
</span><span class="cx"> // URI decomposition attributes
</span><del>- [CustomSetter] attribute DOMString protocol;
- [CustomSetter] attribute DOMString host;
- [CustomSetter] attribute DOMString hostname;
- [CustomSetter] attribute DOMString port;
- [CustomSetter] attribute DOMString pathname;
- [CustomSetter] attribute DOMString search;
- [CustomSetter] attribute DOMString hash;
</del><ins>+ [SetterCallWith=ActiveWindow&FirstWindow, SetterRaisesException] attribute DOMString protocol;
+ [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString host;
+ [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString hostname;
+ [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString port;
+ [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString pathname;
+ [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString search;
+ [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString hash;
</ins><span class="cx">
</span><span class="cx"> readonly attribute DOMString origin;
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>