<!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>[212597] trunk/Source</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/212597">212597</a></dd>
<dt>Author</dt> <dd>bburg@apple.com</dd>
<dt>Date</dt> <dd>2017-02-17 16:40:22 -0800 (Fri, 17 Feb 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
https://bugs.webkit.org/show_bug.cgi?id=168273
&lt;rdar://problem/29949325&gt;

Reviewed by Matt Baker.

Add the ability to dock Web Inspector to the left of the inspected view.
The frontend decides whether the Dock to Side button docks left or right
based on the current layout direction.

Source/WebCore:

* inspector/InspectorFrontendClient.h:
* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::setAttachedWindow):
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::requestSetDockSide):

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WebInspector.contentLoaded):
Rename the &quot;Dock to Right&quot; button to &quot;Dock to Side&quot; instead. It's easier to just
have one button than to try and conditionally hide one or the other based on
the layout direction. Change the dock callback and the icon used for the button
depending on layout direction.

(WebInspector.resolvedLayoutDirection):
Refactor getLayoutDirection() to resolvedLayoutDirection() so callers get back
either &quot;ltr&quot; or &quot;rtl&quot;.

Flip the dock side if layout direction changes while docked to the side.

Adjust various code paths to account for the existing of left docking. In particular,
resize rejection needs special-casing for resizing leftward from beyond the right side
of the Inspector view when it is docked to the left. Improve related comments since it
took me an unbelievable amount of time to understand what this code is supposed to do.

* UserInterface/Views/Main.css:
(body.docked.right):
(body.docked.left #docked-resizer):
(body.docked:matches(.right, .left) #navigation-sidebar.collapsed &gt; .resizer):
(body.docked.right #navigation-sidebar.collapsed &gt; .resizer): Deleted.
Add .docked.left analogues to rules for .docked.right.

Source/WebKit2:

* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::attachLeft):
(WebKit::WebInspectorProxy::attach):
(WebKit::WebInspectorProxy::createInspectorPage):
* UIProcess/WebInspectorProxy.h:
* UIProcess/WebInspectorProxy.messages.in:
Add plumbing for new dock configuration.

* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
(WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
(WebKit::WebInspectorProxy::platformAttach):
Adapt existing sizing logic to work for docking to left.

* WebProcess/WebPage/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::requestSetDockSide):
(WebKit::WebInspectorUI::setDockSide):
* WebProcess/WebPage/WebInspectorUI.h:
(WebKit::WebInspectorUI::attachedLeft):
* WebProcess/WebPage/WebInspectorUI.messages.in:
Add plumbing for new dock configuration.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorFrontendClienth">trunk/Source/WebCore/inspector/InspectorFrontendClient.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorFrontendClientLocalcpp">trunk/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorFrontendHostcpp">trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs">trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseMainjs">trunk/Source/WebInspectorUI/UserInterface/Base/Main.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsMaincss">trunk/Source/WebInspectorUI/UserInterface/Views/Main.css</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebInspectorProxycpp">trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebInspectorProxyh">trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebInspectorProxymessagesin">trunk/Source/WebKit2/UIProcess/WebInspectorProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebInspectorProxyMacmm">trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorUIcpp">trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorUIh">trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebInspectorUImessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.messages.in</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesDockLeftsvg">trunk/Source/WebInspectorUI/UserInterface/Images/DockLeft.svg</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebCore/ChangeLog        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2017-02-17  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
+        https://bugs.webkit.org/show_bug.cgi?id=168273
+        &lt;rdar://problem/29949325&gt;
+
+        Reviewed by Matt Baker.
+
+        Add the ability to dock Web Inspector to the left of the inspected view.
+        The frontend decides whether the Dock to Side button docks left or right
+        based on the current layout direction.
+
+        * inspector/InspectorFrontendClient.h:
+        * inspector/InspectorFrontendClientLocal.cpp:
+        (WebCore::InspectorFrontendClientLocal::setAttachedWindow):
+        * inspector/InspectorFrontendHost.cpp:
+        (WebCore::InspectorFrontendHost::requestSetDockSide):
+
</ins><span class="cx"> 2017-02-16  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Allow PlatformCALayers to specify that they want deep color backing store
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorFrontendClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorFrontendClient.h (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorFrontendClient.h        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebCore/inspector/InspectorFrontendClient.h        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx">     enum class DockSide {
</span><span class="cx">         Undocked = 0,
</span><span class="cx">         Right,
</span><ins>+        Left,
</ins><span class="cx">         Bottom,
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorFrontendClientLocalcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -261,6 +261,9 @@
</span><span class="cx">     case DockSide::Right:
</span><span class="cx">         side = &quot;right&quot;;
</span><span class="cx">         break;
</span><ins>+    case DockSide::Left:
+        side = &quot;left&quot;;
+        break;
</ins><span class="cx">     case DockSide::Bottom:
</span><span class="cx">         side = &quot;bottom&quot;;
</span><span class="cx">         break;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorFrontendHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebCore/inspector/InspectorFrontendHost.cpp        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -158,6 +158,8 @@
</span><span class="cx">         m_client-&gt;requestSetDockSide(InspectorFrontendClient::DockSide::Undocked);
</span><span class="cx">     else if (side == &quot;right&quot;)
</span><span class="cx">         m_client-&gt;requestSetDockSide(InspectorFrontendClient::DockSide::Right);
</span><ins>+    else if (side == &quot;left&quot;)
+        m_client-&gt;requestSetDockSide(InspectorFrontendClient::DockSide::Left);
</ins><span class="cx">     else if (side == &quot;bottom&quot;)
</span><span class="cx">         m_client-&gt;requestSetDockSide(InspectorFrontendClient::DockSide::Bottom);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebInspectorUI/ChangeLog        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -1,5 +1,43 @@
</span><span class="cx"> 2017-02-17  Brian Burg  &lt;bburg@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
+        https://bugs.webkit.org/show_bug.cgi?id=168273
+        &lt;rdar://problem/29949325&gt;
+
+        Reviewed by Matt Baker.
+
+        Add the ability to dock Web Inspector to the left of the inspected view.
+        The frontend decides whether the Dock to Side button docks left or right
+        based on the current layout direction.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Base/Main.js:
+        (WebInspector.contentLoaded):
+        Rename the &quot;Dock to Right&quot; button to &quot;Dock to Side&quot; instead. It's easier to just
+        have one button than to try and conditionally hide one or the other based on
+        the layout direction. Change the dock callback and the icon used for the button
+        depending on layout direction.
+
+        (WebInspector.resolvedLayoutDirection):
+        Refactor getLayoutDirection() to resolvedLayoutDirection() so callers get back
+        either &quot;ltr&quot; or &quot;rtl&quot;.
+
+        Flip the dock side if layout direction changes while docked to the side.
+
+        Adjust various code paths to account for the existing of left docking. In particular,
+        resize rejection needs special-casing for resizing leftward from beyond the right side
+        of the Inspector view when it is docked to the left. Improve related comments since it
+        took me an unbelievable amount of time to understand what this code is supposed to do.
+
+        * UserInterface/Views/Main.css:
+        (body.docked.right):
+        (body.docked.left #docked-resizer):
+        (body.docked:matches(.right, .left) #navigation-sidebar.collapsed &gt; .resizer):
+        (body.docked.right #navigation-sidebar.collapsed &gt; .resizer): Deleted.
+        Add .docked.left analogues to rules for .docked.right.
+
+2017-02-17  Brian Burg  &lt;bburg@apple.com&gt;
+
</ins><span class="cx">         Web Inspector: RTL: add TabBar support for RTL layout
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=168446
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx"> localizedStrings[&quot;Display&quot;] = &quot;Display&quot;;
</span><span class="cx"> localizedStrings[&quot;Do not fade unexecuted code&quot;] = &quot;Do not fade unexecuted code&quot;;
</span><span class="cx"> localizedStrings[&quot;Dock to bottom of window&quot;] = &quot;Dock to bottom of window&quot;;
</span><del>-localizedStrings[&quot;Dock to right of window&quot;] = &quot;Dock to right of window&quot;;
</del><ins>+localizedStrings[&quot;Dock to side of window&quot;] = &quot;Dock to side of window&quot;;
</ins><span class="cx"> localizedStrings[&quot;Document&quot;] = &quot;Document&quot;;
</span><span class="cx"> localizedStrings[&quot;Document Fragment&quot;] = &quot;Document Fragment&quot;;
</span><span class="cx"> localizedStrings[&quot;Document Type&quot;] = &quot;Document Type&quot;;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceBaseMainjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -358,10 +358,13 @@
</span><span class="cx">     this._undockToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
</span><span class="cx">     this._undockToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._undock, this);
</span><span class="cx"> 
</span><del>-    this._dockRightToolbarButton = new WebInspector.ButtonToolbarItem(&quot;dock-right&quot;, WebInspector.UIString(&quot;Dock to right of window&quot;), null, &quot;Images/DockRight.svg&quot;);
-    this._dockRightToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
-    this._dockRightToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._dockRight, this);
</del><ins>+    let dockImage = WebInspector.resolvedLayoutDirection() === WebInspector.LayoutDirection.RTL ? &quot;Images/DockLeft.svg&quot; : &quot;Images/DockRight.svg&quot;;
+    this._dockToSideToolbarButton = new WebInspector.ButtonToolbarItem(&quot;dock-right&quot;, WebInspector.UIString(&quot;Dock to side of window&quot;), null, dockImage);
+    this._dockToSideToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
</ins><span class="cx"> 
</span><ins>+    let dockToSideCallback = WebInspector.resolvedLayoutDirection() === WebInspector.LayoutDirection.RTL ? this._dockLeft : this._dockRight;
+    this._dockToSideToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, dockToSideCallback, this);
+
</ins><span class="cx">     this._dockBottomToolbarButton = new WebInspector.ButtonToolbarItem(&quot;dock-bottom&quot;, WebInspector.UIString(&quot;Dock to bottom of window&quot;), null, &quot;Images/DockBottom.svg&quot;);
</span><span class="cx">     this._dockBottomToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
</span><span class="cx">     this._dockBottomToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._dockBottom, this);
</span><span class="lines">@@ -400,7 +403,7 @@
</span><span class="cx">     this.toolbar.addToolbarItem(this._closeToolbarButton, WebInspector.Toolbar.Section.Control);
</span><span class="cx"> 
</span><span class="cx">     this.toolbar.addToolbarItem(this._undockToolbarButton, WebInspector.Toolbar.Section.Left);
</span><del>-    this.toolbar.addToolbarItem(this._dockRightToolbarButton, WebInspector.Toolbar.Section.Left);
</del><ins>+    this.toolbar.addToolbarItem(this._dockToSideToolbarButton, WebInspector.Toolbar.Section.Left);
</ins><span class="cx">     this.toolbar.addToolbarItem(this._dockBottomToolbarButton, WebInspector.Toolbar.Section.Left);
</span><span class="cx"> 
</span><span class="cx">     this.toolbar.addToolbarItem(this._reloadToolbarButton, WebInspector.Toolbar.Section.CenterLeft);
</span><span class="lines">@@ -752,11 +755,12 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     this._previousDockConfiguration = this._dockConfiguration;
</span><ins>+
</ins><span class="cx">     if (!this._previousDockConfiguration) {
</span><del>-        if (side === WebInspector.DockConfiguration.Right)
</del><ins>+        if (side === WebInspector.DockConfiguration.Right || side === WebInspector.DockConfiguration.Left)
</ins><span class="cx">             this._previousDockConfiguration = WebInspector.DockConfiguration.Bottom;
</span><span class="cx">         else
</span><del>-            this._previousDockConfiguration = WebInspector.DockConfiguration.Right;
</del><ins>+            this._previousDockConfiguration = WebInspector.resolvedLayoutDirection() === WebInspector.LayoutDirection.RTL ? WebInspector.DockConfiguration.Left : WebInspector.DockConfiguration.Right;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     this._dockConfiguration = side;
</span><span class="lines">@@ -767,12 +771,15 @@
</span><span class="cx"> 
</span><span class="cx">     if (side === WebInspector.DockConfiguration.Bottom) {
</span><span class="cx">         document.body.classList.add(&quot;docked&quot;, WebInspector.DockConfiguration.Bottom);
</span><del>-        document.body.classList.remove(&quot;window-inactive&quot;, WebInspector.DockConfiguration.Right);
</del><ins>+        document.body.classList.remove(&quot;window-inactive&quot;, WebInspector.DockConfiguration.Right, WebInspector.DockConfiguration.Left);
</ins><span class="cx">     } else if (side === WebInspector.DockConfiguration.Right) {
</span><span class="cx">         document.body.classList.add(&quot;docked&quot;, WebInspector.DockConfiguration.Right);
</span><del>-        document.body.classList.remove(&quot;window-inactive&quot;, WebInspector.DockConfiguration.Bottom);
</del><ins>+        document.body.classList.remove(&quot;window-inactive&quot;, WebInspector.DockConfiguration.Bottom, WebInspector.DockConfiguration.Left);
+    } else if (side === WebInspector.DockConfiguration.Left) {
+        document.body.classList.add(&quot;docked&quot;, WebInspector.DockConfiguration.Left);
+        document.body.classList.remove(&quot;window-inactive&quot;, WebInspector.DockConfiguration.Bottom, WebInspector.DockConfiguration.Right);
</ins><span class="cx">     } else
</span><del>-        document.body.classList.remove(&quot;docked&quot;, WebInspector.DockConfiguration.Right, WebInspector.DockConfiguration.Bottom);
</del><ins>+        document.body.classList.remove(&quot;docked&quot;, WebInspector.DockConfiguration.Right, WebInspector.DockConfiguration.Left, WebInspector.DockConfiguration.Bottom);
</ins><span class="cx"> 
</span><span class="cx">     this._ignoreToolbarModeDidChangeEvents = false;
</span><span class="cx"> 
</span><span class="lines">@@ -1575,6 +1582,11 @@
</span><span class="cx">     InspectorFrontendHost.requestSetDockSide(WebInspector.DockConfiguration.Right);
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+WebInspector._dockLeft = function(event)
+{
+    InspectorFrontendHost.requestSetDockSide(WebInspector.DockConfiguration.Left);
+};
+
</ins><span class="cx"> WebInspector._togglePreviousDockConfiguration = function(event)
</span><span class="cx"> {
</span><span class="cx">     InspectorFrontendHost.requestSetDockSide(this._previousDockConfiguration);
</span><span class="lines">@@ -1586,12 +1598,12 @@
</span><span class="cx">         this._closeToolbarButton.hidden = !this.docked;
</span><span class="cx">         this._undockToolbarButton.hidden = this._dockConfiguration === WebInspector.DockConfiguration.Undocked;
</span><span class="cx">         this._dockBottomToolbarButton.hidden = this._dockConfiguration === WebInspector.DockConfiguration.Bottom;
</span><del>-        this._dockRightToolbarButton.hidden = this._dockConfiguration === WebInspector.DockConfiguration.Right;
</del><ins>+        this._dockToSideToolbarButton.hidden = this._dockConfiguration === WebInspector.DockConfiguration.Right || this._dockConfiguration === WebInspector.DockConfiguration.Left;
</ins><span class="cx">     } else {
</span><span class="cx">         this._closeToolbarButton.hidden = true;
</span><span class="cx">         this._undockToolbarButton.hidden = true;
</span><span class="cx">         this._dockBottomToolbarButton.hidden = true;
</span><del>-        this._dockRightToolbarButton.hidden = true;
</del><ins>+        this._dockToSideToolbarButton.hidden = true;
</ins><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -1709,7 +1721,7 @@
</span><span class="cx">     if (event.ctrlKey)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (this._dockConfiguration === WebInspector.DockConfiguration.Right)
</del><ins>+    if (this._dockConfiguration === WebInspector.DockConfiguration.Right || this._dockConfiguration === WebInspector.DockConfiguration.Left)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (this.docked)
</span><span class="lines">@@ -1752,16 +1764,28 @@
</span><span class="cx"> 
</span><span class="cx">         lastScreenPosition = position;
</span><span class="cx"> 
</span><del>-        // If delta is positive the docked Inspector size is decreasing, in which case the cursor client position
-        // with respect to the target cannot be less than the first mouse down position within the target.
-        if (delta &gt; 0 &amp;&amp; clientPosition &lt; firstClientPosition)
-            return;
</del><ins>+        if (this._dockConfiguration === WebInspector.DockConfiguration.Left) {
+            // If the mouse is travelling rightward but is positioned left of the resizer, ignore the event.
+            if (delta &gt; 0 &amp;&amp; clientPosition &lt; firstClientPosition)
+                return;
</ins><span class="cx"> 
</span><del>-        // If delta is negative the docked Inspector size is increasing, in which case the cursor client position
-        // with respect to the target cannot be greater than the first mouse down position within the target.
-        if (delta &lt; 0 &amp;&amp; clientPosition &gt; firstClientPosition)
-            return;
</del><ins>+            // If the mouse is travelling leftward but is positioned to the right of the resizer, ignore the event.
+            if (delta &lt; 0 &amp;&amp; clientPosition &gt; window[windowProperty])
+                return;
</ins><span class="cx"> 
</span><ins>+            // We later subtract the delta from the current position, but since the inspected view and inspector view
+            // are flipped when docked to left, we want dragging to have the opposite effect from docked to right.
+            delta *= -1;
+        } else {
+            // If the mouse is travelling downward/rightward but is positioned above/left of the resizer, ignore the event.
+            if (delta &gt; 0 &amp;&amp; clientPosition &lt; firstClientPosition)
+                return;
+
+            // If the mouse is travelling upward/leftward but is positioned below/right of the resizer, ignore the event.
+            if (delta &lt; 0 &amp;&amp; clientPosition &gt; firstClientPosition)
+                return;
+        }
+
</ins><span class="cx">         let dimension = Math.max(0, window[windowProperty] - delta);
</span><span class="cx">         // If zoomed in/out, there be greater/fewer document pixels shown, but the inspector's
</span><span class="cx">         // width or height should be the same in device pixels regardless of the document zoom.
</span><span class="lines">@@ -2157,6 +2181,13 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     WebInspector.settings.layoutDirection.value = value;
</span><ins>+
+    if (value === WebInspector.LayoutDirection.RTL &amp;&amp; this._dockConfiguration === WebInspector.DockConfiguration.Right)
+        this._dockLeft();
+
+    if (value === WebInspector.LayoutDirection.LTR &amp;&amp; this._dockConfiguration === WebInspector.DockConfiguration.Left)
+        this._dockRight();
+
</ins><span class="cx">     window.location.reload();
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -2656,6 +2687,7 @@
</span><span class="cx"> 
</span><span class="cx"> WebInspector.DockConfiguration = {
</span><span class="cx">     Right: &quot;right&quot;,
</span><ins>+    Left: &quot;left&quot;,
</ins><span class="cx">     Bottom: &quot;bottom&quot;,
</span><span class="cx">     Undocked: &quot;undocked&quot;,
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesDockLeftsvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/DockLeft.svg (0 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/DockLeft.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/DockLeft.svg        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2017 Apple Inc. All rights reserved. --&gt;
+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; id=&quot;root&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot;&gt;
+    &lt;rect fill=&quot;none&quot; stroke=&quot;currentColor&quot; x=&quot;0.5&quot; y=&quot;1.5&quot; width=&quot;15&quot; height=&quot;13&quot;/&gt;
+    &lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; d=&quot;M 6.5 2 L 6.5 14 L 6.5 2 Z&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsMaincss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/Main.css (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/Main.css        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/Main.css        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -60,6 +60,10 @@
</span><span class="cx">     border-left: 1px solid var(--border-color);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+body.docked.left {
+    border-right: 1px solid var(--border-color);
+}
+
</ins><span class="cx"> #docked-resizer {
</span><span class="cx">     display: none;
</span><span class="cx"> 
</span><span class="lines">@@ -68,11 +72,12 @@
</span><span class="cx"> 
</span><span class="cx"> body.docked #docked-resizer {
</span><span class="cx">     display: block;
</span><ins>+
+    position: absolute;
+    top: 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> body.docked.bottom #docked-resizer {
</span><del>-    position: absolute;
-    top: 0;
</del><span class="cx">     left: 0;
</span><span class="cx">     right: 0;
</span><span class="cx">     height: 3px;
</span><span class="lines">@@ -81,8 +86,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> body.docked.right #docked-resizer {
</span><del>-    position: absolute;
-    top: 0;
</del><span class="cx">     left: 0;
</span><span class="cx">     bottom: 0;
</span><span class="cx">     width: 3px;
</span><span class="lines">@@ -90,6 +93,14 @@
</span><span class="cx">     cursor: col-resize;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+body.docked.left #docked-resizer {
+    right: 0;
+    bottom: 0;
+    width: 3px;
+
+    cursor: col-resize;
+}
+
</ins><span class="cx"> body.docked.bottom #toolbar {
</span><span class="cx">     cursor: row-resize;
</span><span class="cx"> }
</span><span class="lines">@@ -132,7 +143,7 @@
</span><span class="cx">     height: 100%;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-body.docked.right #navigation-sidebar.collapsed &gt; .resizer {
</del><ins>+body.docked:matches(.right, .left) #navigation-sidebar.collapsed &gt; .resizer {
</ins><span class="cx">     pointer-events: none;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/ChangeLog        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2017-02-17  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Web Inspector: RTL: Inspector window should dock to the left when using RTL layout direction
+        https://bugs.webkit.org/show_bug.cgi?id=168273
+        &lt;rdar://problem/29949325&gt;
+
+        Reviewed by Matt Baker.
+
+        Add the ability to dock Web Inspector to the left of the inspected view.
+        The frontend decides whether the Dock to Side button docks left or right
+        based on the current layout direction.
+
+        * UIProcess/WebInspectorProxy.cpp:
+        (WebKit::WebInspectorProxy::attachLeft):
+        (WebKit::WebInspectorProxy::attach):
+        (WebKit::WebInspectorProxy::createInspectorPage):
+        * UIProcess/WebInspectorProxy.h:
+        * UIProcess/WebInspectorProxy.messages.in:
+        Add plumbing for new dock configuration.
+
+        * UIProcess/mac/WebInspectorProxyMac.mm:
+        (WebKit::WebInspectorProxy::platformCreateInspectorPage):
+        (WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
+        (WebKit::WebInspectorProxy::platformAttach):
+        Adapt existing sizing logic to work for docking to left.
+
+        * WebProcess/WebPage/WebInspectorUI.cpp:
+        (WebKit::WebInspectorUI::requestSetDockSide):
+        (WebKit::WebInspectorUI::setDockSide):
+        * WebProcess/WebPage/WebInspectorUI.h:
+        (WebKit::WebInspectorUI::attachedLeft):
+        * WebProcess/WebPage/WebInspectorUI.messages.in:
+        Add plumbing for new dock configuration.
+
</ins><span class="cx"> 2017-02-16  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Allow PlatformCALayers to specify that they want deep color backing store
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebInspectorProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -217,6 +217,11 @@
</span><span class="cx">     attach(AttachmentSide::Right);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebInspectorProxy::attachLeft()
+{
+    attach(AttachmentSide::Left);
+}
+
</ins><span class="cx"> void WebInspectorProxy::attach(AttachmentSide side)
</span><span class="cx"> {
</span><span class="cx">     if (!m_inspectedPage || !canAttach())
</span><span class="lines">@@ -240,6 +245,10 @@
</span><span class="cx">     case AttachmentSide::Right:
</span><span class="cx">         m_inspectorPage-&gt;process().send(Messages::WebInspectorUI::AttachedRight(), m_inspectorPage-&gt;pageID());
</span><span class="cx">         break;
</span><ins>+
+    case AttachmentSide::Left:
+        m_inspectorPage-&gt;process().send(Messages::WebInspectorUI::AttachedLeft(), m_inspectorPage-&gt;pageID());
+        break;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     platformAttach();
</span><span class="lines">@@ -491,6 +500,10 @@
</span><span class="cx">             case AttachmentSide::Right:
</span><span class="cx">                 m_inspectorPage-&gt;process().send(Messages::WebInspectorUI::AttachedRight(), m_inspectorPage-&gt;pageID());
</span><span class="cx">                 break;
</span><ins>+
+            case AttachmentSide::Left:
+                m_inspectorPage-&gt;process().send(Messages::WebInspectorUI::AttachedLeft(), m_inspectorPage-&gt;pageID());
+                break;
</ins><span class="cx">             }
</span><span class="cx">         } else
</span><span class="cx">             m_inspectorPage-&gt;process().send(Messages::WebInspectorUI::Detached(), m_inspectorPage-&gt;pageID());
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebInspectorProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -65,7 +65,8 @@
</span><span class="cx"> 
</span><span class="cx"> enum class AttachmentSide {
</span><span class="cx">     Bottom,
</span><del>-    Right
</del><ins>+    Right,
+    Left,
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class WebInspectorProxy : public API::ObjectImpl&lt;API::Object::Type::Inspector&gt;, public IPC::MessageReceiver {
</span><span class="lines">@@ -125,6 +126,7 @@
</span><span class="cx">     AttachmentSide attachmentSide() const { return m_attachmentSide; }
</span><span class="cx">     bool isAttached() const { return m_isAttached; }
</span><span class="cx">     void attachRight();
</span><ins>+    void attachLeft();
</ins><span class="cx">     void attachBottom();
</span><span class="cx">     void attach(AttachmentSide = AttachmentSide::Bottom);
</span><span class="cx">     void detach();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebInspectorProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebInspectorProxy.messages.in (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebInspectorProxy.messages.in        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/UIProcess/WebInspectorProxy.messages.in        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> 
</span><span class="cx">     AttachBottom()
</span><span class="cx">     AttachRight()
</span><ins>+    AttachLeft()
</ins><span class="cx">     Detach()
</span><span class="cx"> 
</span><span class="cx">     AttachAvailabilityChanged(bool available)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWebInspectorProxyMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -287,6 +287,9 @@
</span><span class="cx">         case AttachmentSide::Right:
</span><span class="cx">             initialRect = NSMakeRect(0, 0, inspectorPagePreferences().inspectorAttachedWidth(), NSHeight(inspectedViewFrame));
</span><span class="cx">             break;
</span><ins>+        case AttachmentSide::Left:
+            initialRect = NSMakeRect(0, 0, NSWidth(inspectedViewFrame) - inspectorPagePreferences().inspectorAttachedWidth(), NSHeight(inspectedViewFrame));
+            break;
</ins><span class="cx">         }
</span><span class="cx">     } else {
</span><span class="cx">         initialRect = NSMakeRect(0, 0, initialWindowWidth, initialWindowHeight);
</span><span class="lines">@@ -562,7 +565,24 @@
</span><span class="cx">         inspectorFrame = NSMakeRect(parentWidth - inspectorWidth, 0, inspectorWidth, NSHeight(parentBounds) - insetExcludingBanners);
</span><span class="cx">         break;
</span><span class="cx">     }
</span><ins>+
+    case AttachmentSide::Left: {
+        if (!currentDimension)
+            currentDimension = NSWidth([m_inspectorView frame]);
+
+        CGFloat parentWidth = NSWidth(parentBounds);
+        CGFloat inspectorWidth = InspectorFrontendClientLocal::constrainedAttachedWindowWidth(currentDimension, parentWidth);
+
+        // Preserve the top position of the inspected view so banners in Safari still work. But don't use that
+        // top position for the inspector view since the banners only stretch as wide as the the inspected view.
+        inspectedViewFrame = NSMakeRect(inspectorWidth, 0, NSWidth(inspectedViewFrame), inspectedViewTop);
+        CGFloat insetExcludingBanners = 0;
+        if ([inspectedView isKindOfClass:[WKView class]])
+            insetExcludingBanners = ((WKView *)inspectedView)._topContentInset - ((WKView *)inspectedView)._totalHeightOfBanners;
+        inspectorFrame = NSMakeRect(0, 0, inspectorWidth, NSHeight(parentBounds) - insetExcludingBanners);
+        break;
</ins><span class="cx">     }
</span><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     if (NSEqualRects([m_inspectorView frame], inspectorFrame) &amp;&amp; NSEqualRects([inspectedView frame], inspectedViewFrame))
</span><span class="cx">         return;
</span><span class="lines">@@ -611,6 +631,10 @@
</span><span class="cx">         [m_inspectorView setAutoresizingMask:NSViewHeightSizable | NSViewMinXMargin];
</span><span class="cx">         currentDimension = inspectorPagePreferences().inspectorAttachedWidth();
</span><span class="cx">         break;
</span><ins>+    case AttachmentSide::Left:
+        [m_inspectorView setAutoresizingMask:NSViewHeightSizable | NSViewMaxXMargin];
+        currentDimension = inspectorPagePreferences().inspectorAttachedWidth();
+        break;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     inspectedViewFrameDidChange(currentDimension);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebInspectorUIcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -153,6 +153,9 @@
</span><span class="cx">     case DockSide::Right:
</span><span class="cx">         webProcess.parentProcessConnection()-&gt;send(Messages::WebInspectorProxy::AttachRight(), m_inspectedPageIdentifier);
</span><span class="cx">         break;
</span><ins>+    case DockSide::Left:
+        webProcess.parentProcessConnection()-&gt;send(Messages::WebInspectorProxy::AttachLeft(), m_inspectedPageIdentifier);
+        break;
</ins><span class="cx">     case DockSide::Bottom:
</span><span class="cx">         webProcess.parentProcessConnection()-&gt;send(Messages::WebInspectorProxy::AttachBottom(), m_inspectedPageIdentifier);
</span><span class="cx">         break;
</span><span class="lines">@@ -172,6 +175,10 @@
</span><span class="cx">         sideString = &quot;right&quot;;
</span><span class="cx">         break;
</span><span class="cx"> 
</span><ins>+    case DockSide::Left:
+        sideString = &quot;left&quot;;
+        break;
+
</ins><span class="cx">     case DockSide::Bottom:
</span><span class="cx">         sideString = &quot;bottom&quot;;
</span><span class="cx">         break;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebInspectorUIh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.h (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.h        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.h        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -66,6 +66,7 @@
</span><span class="cx"> 
</span><span class="cx">     void attachedBottom() { setDockSide(DockSide::Bottom); }
</span><span class="cx">     void attachedRight() { setDockSide(DockSide::Right); }
</span><ins>+    void attachedLeft() { setDockSide(DockSide::Left); }
</ins><span class="cx">     void detached() { setDockSide(DockSide::Undocked); }
</span><span class="cx"> 
</span><span class="cx">     void setDockSide(DockSide);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebInspectorUImessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.messages.in (212596 => 212597)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.messages.in        2017-02-18 00:28:03 UTC (rev 212596)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.messages.in        2017-02-18 00:40:22 UTC (rev 212597)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> 
</span><span class="cx">     AttachedBottom()
</span><span class="cx">     AttachedRight()
</span><ins>+    AttachedLeft()
</ins><span class="cx">     Detached()
</span><span class="cx">     SetDockingUnavailable(bool unavailable)
</span><span class="cx">     SetIsVisible(bool visible)
</span></span></pre>
</div>
</div>

</body>
</html>