<!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  &lt;cdumez@apple.com&gt;
</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  &lt;cdumez@apple.com&gt;
+
</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-&gt;setHref(locationString, activeDOMWindow(exec), firstDOMWindow(exec));
</del><ins>+        location-&gt;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)-&gt;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&lt;Location&gt; location = frame-&gt;document()-&gt;domWindow()-&gt;location())
</span><del>-        location-&gt;setHref(locationString, activeDOMWindow(exec), firstDOMWindow(exec));
</del><ins>+        location-&gt;setHref(activeDOMWindow(exec), firstDOMWindow(exec), locationString);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue createNewDocumentWrapper(ExecState&amp; state, JSDOMGlobalObject&amp; globalObject, Document&amp; 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)-&gt;value(exec);
-    if (exec-&gt;hadException())
-        return;
-    impl().setHref(href, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setProtocol(ExecState* exec, JSValue value)
-{
-    String protocol = value.toString(exec)-&gt;value(exec);
-    if (exec-&gt;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)-&gt;value(exec);
-    if (exec-&gt;hadException())
-        return;
-    impl().setHost(host, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setHostname(ExecState* exec, JSValue value)
-{
-    String hostname = value.toString(exec)-&gt;value(exec);
-    if (exec-&gt;hadException())
-        return;
-    impl().setHostname(hostname, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setPort(ExecState* exec, JSValue value)
-{
-    String port = value.toWTFString(exec);
-    if (exec-&gt;hadException())
-        return;
-    impl().setPort(port, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setPathname(ExecState* exec, JSValue value)
-{
-    String pathname = value.toString(exec)-&gt;value(exec);
-    if (exec-&gt;hadException())
-        return;
-    impl().setPathname(pathname, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setSearch(ExecState* exec, JSValue value)
-{
-    String pathname = value.toString(exec)-&gt;value(exec);
-    if (exec-&gt;hadException())
-        return;
-    impl().setSearch(pathname, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-void JSLocation::setHash(ExecState* exec, JSValue value)
-{
-    String hash = value.toString(exec)-&gt;value(exec);
-    if (exec-&gt;hadException())
-        return;
-    impl().setHash(hash, activeDOMWindow(exec), firstDOMWindow(exec));
-}
-
-JSValue JSLocation::replace(ExecState* exec)
-{
-    String urlString = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
-    if (exec-&gt;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-&gt;argument(0).toString(exec)-&gt;value(exec);
-    if (exec-&gt;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 = &quot;impl.${functionName}&quot;;
</span><span class="cx">                     }
</span><span class="cx"> 
</span><ins>+                    unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;SetterCallWith&quot;}, \@implContent, &quot;&quot;));
</ins><span class="cx">                     unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;&quot;));
</span><span class="cx"> 
</span><span class="cx">                     push(@arguments, &quot;ec&quot;) 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-&gt;ExtendedAttributeContains($callWith, &quot;ScriptState&quot;)) {
-        push(@callWithArgs, &quot;exec&quot;);
-    }
</del><ins>+    push(@callWithArgs, &quot;exec&quot;) if $codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;ScriptState&quot;);
</ins><span class="cx">     if ($codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;ScriptExecutionContext&quot;)) {
</span><span class="cx">         push(@$outputArray, &quot;    auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();\n&quot;);
</span><span class="cx">         push(@$outputArray, &quot;    if (!scriptContext)\n&quot;);
</span><span class="lines">@@ -3191,6 +3190,9 @@
</span><span class="cx">         $implIncludes{&quot;&lt;inspector/ScriptCallStackFactory.h&gt;&quot;} = 1;
</span><span class="cx">         push(@callWithArgs, &quot;scriptArguments.release()&quot;);
</span><span class="cx">     }
</span><ins>+    push(@callWithArgs, &quot;activeDOMWindow(exec)&quot;) if $codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;ActiveWindow&quot;);
+    push(@callWithArgs, &quot;firstDOMWindow(exec)&quot;) if $codeGenerator-&gt;ExtendedAttributeContains($callWith, &quot;FirstWindow&quot;);
+
</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(
+            &quot;with-call-with-and-setter-call-with-attribute&quot;,
+            &quot;TestObj:with-call-with-and-setter-call-with-attribute&quot;,
+            &quot;read-write glong TestObj:with-call-with-and-setter-call-with-attribute&quot;,
+            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">             &quot;with-script-execution-context-attribute&quot;,
</span><span class="lines">@@ -2045,6 +2062,23 @@
</span><span class="cx">     item-&gt;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-&gt;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-&gt;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">     { &quot;strictTypeCheckingAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStrictTypeCheckingAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStrictTypeCheckingAttribute) } },
</span><span class="cx">     { &quot;onfoo&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjOnfoo), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjOnfoo) } },
</span><span class="cx">     { &quot;withScriptStateAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptStateAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptStateAttribute) } },
</span><ins>+    { &quot;withCallWithAndSetterCallWithAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithCallWithAndSetterCallWithAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithCallWithAndSetterCallWithAttribute) } },
</ins><span class="cx">     { &quot;withScriptExecutionContextAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAttribute) } },
</span><span class="cx">     { &quot;withScriptStateAttributeRaises&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptStateAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptStateAttributeRaises) } },
</span><span class="cx">     { &quot;withScriptExecutionContextAttributeRaises&quot;, DontDelete | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(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&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(slotBase))
+            return reportDeprecatedGetterError(*exec, &quot;TestObj&quot;, &quot;withCallWithAndSetterCallWithAttribute&quot;);
+        return throwGetterTypeError(*exec, &quot;TestObj&quot;, &quot;withCallWithAndSetterCallWithAttribute&quot;);
+    }
+    auto&amp; impl = castedThis-&gt;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&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
+    if (UNLIKELY(!castedThis)) {
+        if (jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue)))
+            reportDeprecatedSetterError(*exec, &quot;TestObj&quot;, &quot;withCallWithAndSetterCallWithAttribute&quot;);
+        else
+            throwSetterTypeError(*exec, &quot;TestObj&quot;, &quot;withCallWithAndSetterCallWithAttribute&quot;);
+        return;
+    }
+    auto&amp; impl = castedThis-&gt;impl();
+    int nativeValue = toInt32(exec, value, NormalConversion);
+    if (UNLIKELY(exec-&gt;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-&gt;setWithScriptStateAttribute(newWithScriptStateAttribute);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (int)withCallWithAndSetterCallWithAttribute
+{
+    WebCore::JSMainThreadNullState state;
+    return IMPL-&gt;withCallWithAndSetterCallWithAttribute();
+}
+
+- (void)setWithCallWithAndSetterCallWithAttribute:(int)newWithCallWithAndSetterCallWithAttribute
+{
+    WebCore::JSMainThreadNullState state;
+    IMPL-&gt;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&amp;CallStack] void withScriptArgumentsAndCallStack();
</span><span class="cx"> 
</span><span class="cx">     [CallWith=ScriptState] attribute long withScriptStateAttribute;
</span><ins>+    [CallWith=ScriptState, SetterCallWith=ActiveWindow&amp;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&amp; urlString, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, SetLocationLocking locking)
</del><ins>+void DOMWindow::setLocation(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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&amp; location, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow,
</del><ins>+        void setLocation(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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() : &quot;#&quot; + fragmentIdentifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Location::setHref(const String&amp; url, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setHref(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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&amp; protocol, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, ExceptionCode&amp; ec)
</del><ins>+void Location::setProtocol(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; protocol, ExceptionCode&amp; 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&amp; host, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setHost(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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-&gt;document()-&gt;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&amp; hostname, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setHostname(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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-&gt;document()-&gt;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&amp; portString, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setPort(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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&amp; pathname, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setPathname(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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-&gt;document()-&gt;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&amp; search, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setSearch(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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-&gt;document()-&gt;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&amp; hash, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setHash(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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&amp; url, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::assign(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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&amp; url, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::replace(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; 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-&gt;document()-&gt;domWindow()-&gt;setLocation(url, activeWindow, firstWindow, LockHistoryAndBackForwardList);
</del><ins>+    m_frame-&gt;document()-&gt;domWindow()-&gt;setLocation(activeWindow, firstWindow, url, LockHistoryAndBackForwardList);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Location::reload(DOMWindow&amp; activeWindow)
</span><span class="lines">@@ -261,13 +261,13 @@
</span><span class="cx">     m_frame-&gt;navigationScheduler().scheduleRefresh(activeWindow.document());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Location::setLocation(const String&amp; url, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow)
</del><ins>+void Location::setLocation(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp; url)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_frame);
</span><span class="cx">     Frame* frame = m_frame-&gt;loader().findFrameForNavigation(String(), activeWindow.document());
</span><span class="cx">     if (!frame)
</span><span class="cx">         return;
</span><del>-    frame-&gt;document()-&gt;domWindow()-&gt;setLocation(url, activeWindow, firstWindow);
</del><ins>+    frame-&gt;document()-&gt;domWindow()-&gt;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&lt;Location&gt; create(Frame* frame) { return adoptRef(*new Location(frame)); }
</span><span class="cx"> 
</span><del>-    void setHref(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setHref(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx">     String href() const;
</span><span class="cx"> 
</span><del>-    void assign(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
-    void replace(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void assign(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
+    void replace(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx">     void reload(DOMWindow&amp; activeWindow);
</span><span class="cx"> 
</span><del>-    void setProtocol(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, ExceptionCode&amp;);
</del><ins>+    void setProtocol(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;, ExceptionCode&amp;);
</ins><span class="cx">     String protocol() const;
</span><del>-    void setHost(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setHost(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx">     String host() const;
</span><del>-    void setHostname(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setHostname(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx">     String hostname() const;
</span><del>-    void setPort(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setPort(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx">     String port() const;
</span><del>-    void setPathname(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setPathname(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx">     String pathname() const;
</span><del>-    void setSearch(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setSearch(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx">     String search() const;
</span><del>-    void setHash(const String&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setHash(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</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&amp;, DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow);
</del><ins>+    void setLocation(DOMWindow&amp; activeWindow, DOMWindow&amp; firstWindow, const String&amp;);
</ins><span class="cx"> 
</span><span class="cx">     const URL&amp; 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&amp;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&amp;FirstWindow, ForwardDeclareInHeader] void assign([Default=Undefined] optional DOMString url);
+    [CallWith=ActiveWindow&amp;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&amp;FirstWindow, SetterRaisesException] attribute DOMString protocol;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString host;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString hostname;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString port;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString pathname;
+    [SetterCallWith=ActiveWindow&amp;FirstWindow] attribute DOMString search;
+    [SetterCallWith=ActiveWindow&amp;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>