Diff
Modified: trunk/Source/WebCore/ChangeLog (129881 => 129882)
--- trunk/Source/WebCore/ChangeLog 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebCore/ChangeLog 2012-09-28 13:08:50 UTC (rev 129882)
@@ -1,3 +1,33 @@
+2012-09-27 Alexander Pavlov <[email protected]>
+
+ Web Inspector: [Device Metrics] Remove the gutter overlay moving its functionality into the InspectorOverlay
+ https://bugs.webkit.org/show_bug.cgi?id=97799
+
+ Reviewed by Pavel Feldman.
+
+ In order to reduce the amount of port-specific code, the gutter overlay painted in the device metrics emulation mode
+ has been replaced by the respective functionality in the HTML-based InspectorOverlay in WebCore. The InspectorOverlay
+ now covers the entire WebView rather than the FrameView only.
+
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::webViewResized):
+ (WebCore):
+ * inspector/InspectorController.h:
+ (WebCore):
+ (InspectorController):
+ * inspector/InspectorOverlay.cpp:
+ (WebCore::InspectorOverlay::InspectorOverlay):
+ (WebCore::InspectorOverlay::paint):
+ (WebCore::InspectorOverlay::resize):
+ (WebCore):
+ (WebCore::InspectorOverlay::update):
+ (WebCore::InspectorOverlay::drawGutter):
+ (WebCore::InspectorOverlay::reset):
+ * inspector/InspectorOverlay.h:
+ (InspectorOverlay):
+ * inspector/InspectorOverlayPage.html: Introduce the gutter painting functionality previously found in the Chromium's
+ DeviceMetricsSupport class, which used to implement WebPageOverlay.
+
2012-09-28 Sudarsana Nagineni <[email protected]>
editing/pasteboard/paste-removing-iframe.html crashes on EFL bots
Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (129881 => 129882)
--- trunk/Source/WebCore/inspector/InspectorController.cpp 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp 2012-09-28 13:08:50 UTC (rev 129882)
@@ -289,6 +289,11 @@
IdentifiersFactory::setProcessId(processId);
}
+void InspectorController::webViewResized(const IntSize& size)
+{
+ m_overlay->resize(size);
+}
+
void InspectorController::evaluateForTestInFrontend(long callId, const String& script)
{
m_inspectorAgent->evaluateForTestInFrontend(callId, script);
Modified: trunk/Source/WebCore/inspector/InspectorController.h (129881 => 129882)
--- trunk/Source/WebCore/inspector/InspectorController.h 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebCore/inspector/InspectorController.h 2012-09-28 13:08:50 UTC (rev 129882)
@@ -58,6 +58,7 @@
class InspectorResourceAgent;
class InspectorState;
class InstrumentingAgents;
+class IntSize;
class Page;
class PostWorkerNotificationToFrontendTask;
class Node;
@@ -91,6 +92,7 @@
void disconnectFrontend();
void reconnectFrontend(InspectorFrontendChannel*, const String& inspectorStateCookie);
void setProcessId(long);
+ void webViewResized(const IntSize&);
void inspect(Node*);
void drawHighlight(GraphicsContext&) const;
Modified: trunk/Source/WebCore/inspector/InspectorOverlay.cpp (129881 => 129882)
--- trunk/Source/WebCore/inspector/InspectorOverlay.cpp 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebCore/inspector/InspectorOverlay.cpp 2012-09-28 13:08:50 UTC (rev 129882)
@@ -205,7 +205,7 @@
void InspectorOverlay::paint(GraphicsContext& context)
{
- if (m_pausedInDebuggerMessage.isNull() && !m_highlightNode && !m_highlightRect)
+ if (m_pausedInDebuggerMessage.isNull() && !m_highlightNode && !m_highlightRect && m_size.isEmpty())
return;
GraphicsContextStateSaver stateSaver(context);
FrameView* view = overlayPage()->mainFrame()->view();
@@ -237,6 +237,12 @@
buildRectHighlight(m_page, m_highlightRect.get(), m_rectHighlightConfig, highlight);
}
+void InspectorOverlay::resize(const IntSize& size)
+{
+ m_size = size;
+ update();
+}
+
void InspectorOverlay::setPausedInDebuggerMessage(const String* message)
{
m_pausedInDebuggerMessage = message ? *message : String();
@@ -271,7 +277,7 @@
void InspectorOverlay::update()
{
- if (!m_highlightNode && !m_highlightRect && m_pausedInDebuggerMessage.isNull()) {
+ if (!m_highlightNode && !m_highlightRect && m_pausedInDebuggerMessage.isNull() && m_size.isEmpty()) {
m_client->hideHighlight();
return;
}
@@ -281,12 +287,16 @@
return;
FrameView* overlayView = overlayPage()->mainFrame()->view();
- IntRect visibleRect = enclosingIntRect(view->visibleContentRect());
- overlayView->resize(visibleRect.width(), visibleRect.height());
+ IntSize viewportSize = enclosingIntRect(view->visibleContentRect()).size();
+ IntSize frameViewFullSize = enclosingIntRect(view->visibleContentRect(true)).size();
+ IntSize size = m_size.isEmpty() ? frameViewFullSize : m_size;
+ overlayView->resize(size);
// Clear canvas and paint things.
- reset();
+ reset(viewportSize, m_size.isEmpty() ? IntSize() : frameViewFullSize);
+ // Include scrollbars to avoid masking them by the gutter.
+ drawGutter();
drawNodeHighlight();
drawRectHighlight();
drawPausedInDebuggerMessage();
@@ -300,7 +310,7 @@
m_client->highlight();
}
-static RefPtr<InspectorObject> buildObjectForPoint(const FloatPoint& point)
+static PassRefPtr<InspectorObject> buildObjectForPoint(const FloatPoint& point)
{
RefPtr<InspectorObject> object = InspectorObject::create();
object->setNumber("x", point.x());
@@ -308,7 +318,7 @@
return object.release();
}
-static RefPtr<InspectorArray> buildArrayForQuad(const FloatQuad& quad)
+static PassRefPtr<InspectorArray> buildArrayForQuad(const FloatQuad& quad)
{
RefPtr<InspectorArray> array = InspectorArray::create();
array->pushObject(buildObjectForPoint(quad.p1()));
@@ -318,7 +328,7 @@
return array.release();
}
-static RefPtr<InspectorObject> buildObjectForHighlight(FrameView* mainView, const Highlight& highlight)
+static PassRefPtr<InspectorObject> buildObjectForHighlight(FrameView* mainView, const Highlight& highlight)
{
RefPtr<InspectorObject> object = InspectorObject::create();
RefPtr<InspectorArray> array = InspectorArray::create();
@@ -343,6 +353,19 @@
return object.release();
}
+static PassRefPtr<InspectorObject> buildObjectForSize(const IntSize& size)
+{
+ RefPtr<InspectorObject> result = InspectorObject::create();
+ result->setNumber("width", size.width());
+ result->setNumber("height", size.height());
+ return result.release();
+}
+
+void InspectorOverlay::drawGutter()
+{
+ evaluateInOverlay("drawGutter", "");
+}
+
void InspectorOverlay::drawNodeHighlight()
{
if (!m_highlightNode)
@@ -451,9 +474,13 @@
return m_overlayPage.get();
}
-void InspectorOverlay::reset()
+void InspectorOverlay::reset(const IntSize& viewportSize, const IntSize& frameViewFullSize)
{
- evaluateInOverlay("reset", String::number(m_page->deviceScaleFactor()));
+ RefPtr<InspectorObject> resetData = InspectorObject::create();
+ resetData->setNumber("deviceScaleFactor", m_page->deviceScaleFactor());
+ resetData->setObject("viewportSize", buildObjectForSize(viewportSize));
+ resetData->setObject("frameViewFullSize", buildObjectForSize(frameViewFullSize));
+ evaluateInOverlay("reset", resetData.release());
}
void InspectorOverlay::evaluateInOverlay(const String& method, const String& argument)
Modified: trunk/Source/WebCore/inspector/InspectorOverlay.h (129881 => 129882)
--- trunk/Source/WebCore/inspector/InspectorOverlay.h 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebCore/inspector/InspectorOverlay.h 2012-09-28 13:08:50 UTC (rev 129882)
@@ -100,6 +100,7 @@
void paint(GraphicsContext&);
void drawOutline(GraphicsContext*, const LayoutRect&, const Color&);
void getHighlight(Highlight*) const;
+ void resize(const IntSize&);
void setPausedInDebuggerMessage(const String*);
@@ -112,11 +113,12 @@
private:
InspectorOverlay(Page*, InspectorClient*);
+ void drawGutter();
void drawNodeHighlight();
void drawRectHighlight();
void drawPausedInDebuggerMessage();
Page* overlayPage();
- void reset();
+ void reset(const IntSize& viewportSize, const IntSize& frameViewFullSize);
void evaluateInOverlay(const String& method, const String& argument);
void evaluateInOverlay(const String& method, PassRefPtr<InspectorValue> argument);
@@ -128,6 +130,7 @@
OwnPtr<IntRect> m_highlightRect;
OwnPtr<Page> m_overlayPage;
HighlightConfig m_rectHighlightConfig;
+ IntSize m_size;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/inspector/InspectorOverlayPage.html (129881 => 129882)
--- trunk/Source/WebCore/inspector/InspectorOverlayPage.html 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebCore/inspector/InspectorOverlayPage.html 2012-09-28 13:08:50 UTC (rev 129882)
@@ -89,6 +89,24 @@
#node-id {
color: rgb(26, 26, 166);
}
+
+#right-gutter {
+ display: none;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ position: absolute;
+ background-color: darkgray;
+}
+
+#bottom-gutter {
+ display: none;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ position: absolute;
+ background-color: darkgray;
+}
</style>
<script>
const lightGridColor = "rgba(0,0,0,0.2)";
@@ -266,14 +284,41 @@
quad1[3].x === quad2[3].x && quad1[3].y === quad2[3].y;
}
-function reset(deviceScaleFactor)
+function drawGutter()
{
+ var frameWidth = frameViewFullSize.width;
+ var frameHeight = frameViewFullSize.height;
+
+ if (!frameWidth || document.body.offsetWidth <= frameWidth)
+ rightGutter.style.removeProperty("display");
+ else {
+ rightGutter.style.display = "block";
+ rightGutter.style.left = frameWidth + "px";
+ }
+
+ if (!frameHeight || document.body.offsetHeight <= frameHeight)
+ bottomGutter.style.removeProperty("display");
+ else {
+ bottomGutter.style.display = "block";
+ bottomGutter.style.top = frameHeight + "px";
+ }
+}
+
+function reset(resetData)
+{
+ var deviceScaleFactor = resetData.deviceScaleFactor;
+ var viewportSize = resetData.viewportSize;
+ window.frameViewFullSize = resetData.frameViewFullSize;
+
window.canvas = document.getElementById("canvas");
window.context = canvas.getContext("2d");
- canvas.width = deviceScaleFactor * document.body.offsetWidth;
- canvas.height = deviceScaleFactor * document.body.offsetHeight;
- canvas.style.width = document.body.offsetWidth + "px";
- canvas.style.height = document.body.offsetHeight + "px";
+ window.rightGutter = document.getElementById("right-gutter");
+ window.bottomGutter = document.getElementById("bottom-gutter");
+
+ canvas.width = deviceScaleFactor * viewportSize.width;
+ canvas.height = deviceScaleFactor * viewportSize.height;
+ canvas.style.width = viewportSize.width + "px";
+ canvas.style.height = viewportSize.height + "px";
context.scale(deviceScaleFactor, deviceScaleFactor);
document.getElementById("paused-in-debugger").style.visibility = "hidden";
@@ -517,5 +562,7 @@
<span id="tag-name"></span><span id="node-id"></span><span id="class-name"></span>
<span id="node-width"></span><span class="px">px</span><span class="px"> × </span><span id="node-height"></span><span class="px">px</span>
</div>
+<div id="right-gutter"></div>
+<div id="bottom-gutter"></div>
<div id="log"></div>
</html>
Modified: trunk/Source/WebKit/chromium/ChangeLog (129881 => 129882)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-09-28 13:08:50 UTC (rev 129882)
@@ -1,3 +1,26 @@
+2012-09-27 Alexander Pavlov <[email protected]>
+
+ Web Inspector: [Device Metrics] Remove the gutter overlay moving its functionality into the InspectorOverlay
+ https://bugs.webkit.org/show_bug.cgi?id=97799
+
+ Reviewed by Pavel Feldman.
+
+ - Dispatch the webViewResized() event on InspectorController, which is necessary to update the InspectorOverlay.
+ - Remove the gutter overlay painting code.
+
+ * src/WebDevToolsAgentImpl.cpp:
+ (WebKit::DeviceMetricsSupport::DeviceMetricsSupport):
+ (WebKit::DeviceMetricsSupport::~DeviceMetricsSupport):
+ (WebKit::WebDevToolsAgentImpl::attach):
+ (WebKit::WebDevToolsAgentImpl::webViewResized):
+ (WebKit::WebDevToolsAgentImpl::overrideDeviceMetrics):
+ * src/WebDevToolsAgentImpl.h:
+ (WebDevToolsAgentImpl):
+ * src/WebDevToolsAgentPrivate.h:
+ (WebDevToolsAgentPrivate):
+ * src/WebViewImpl.cpp:
+ (WebKit::WebViewImpl::resize):
+
2012-09-28 Pavel Feldman <[email protected]>
Web Inspector: [chromium] remove devtools_frontend.zip
Modified: trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp (129881 => 129882)
--- trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp 2012-09-28 13:08:50 UTC (rev 129882)
@@ -72,8 +72,6 @@
using namespace std;
namespace OverlayZOrders {
-static const int viewportGutter = 97;
-
// Use 99 as a big z-order number so that highlight is above other overlays.
static const int highlight = 99;
}
@@ -183,20 +181,18 @@
OwnPtr<WebDevToolsAgent::MessageDescriptor> m_descriptor;
};
-class DeviceMetricsSupport : public WebPageOverlay {
+class DeviceMetricsSupport {
public:
DeviceMetricsSupport(WebViewImpl* webView)
: m_webView(webView)
, m_fitWindow(false)
, m_originalZoomFactor(0)
{
- m_webView->addPageOverlay(this, OverlayZOrders::viewportGutter);
}
~DeviceMetricsSupport()
{
restore();
- m_webView->removePageOverlay(this);
}
void setDeviceMetrics(int width, int height, float textZoomFactor, bool fitWindow)
@@ -285,7 +281,7 @@
view->setHorizontalScrollbarLock(false);
view->setVerticalScrollbarLock(false);
view->setScrollbarModes(ScrollbarAuto, ScrollbarAuto, false, false);
- view->resize(IntSize(m_webView->size()));
+ view->setFrameRect(IntRect(IntPoint(), IntSize(m_webView->size())));
m_webView->sendResizeEventAndRepaint();
}
@@ -341,19 +337,6 @@
doc->updateLayout();
}
- virtual void paintPageOverlay(WebCanvas* canvas)
- {
- FrameView* frameView = this->frameView();
- if (!frameView)
- return;
-
- GraphicsContextBuilder builder(canvas);
- GraphicsContext& gc = builder.context();
- gc.clipOut(IntRect(IntPoint(), frameView->size()));
- gc.setFillColor(Color::darkGray, ColorSpaceDeviceRGB);
- gc.drawRect(IntRect(IntPoint(), m_webView->size()));
- }
-
WebCore::FrameView* frameView()
{
return m_webView->mainFrameImpl() ? m_webView->mainFrameImpl()->frameView() : 0;
@@ -389,6 +372,7 @@
ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client);
inspectorController()->connectFrontend(this);
+ inspectorController()->webViewResized(m_webViewImpl->size());
m_attached = true;
}
@@ -437,10 +421,12 @@
return !!m_metricsSupport;
}
-void WebDevToolsAgentImpl::webViewResized()
+void WebDevToolsAgentImpl::webViewResized(const WebSize& size)
{
if (m_metricsSupport)
m_metricsSupport->webViewResized();
+ if (InspectorController* ic = inspectorController())
+ ic->webViewResized(IntSize(size.width, size.height));
}
void WebDevToolsAgentImpl::overrideDeviceMetrics(int width, int height, float fontScaleFactor, bool fitWindow)
@@ -448,12 +434,19 @@
if (!width && !height) {
if (m_metricsSupport)
m_metricsSupport.clear();
+ if (InspectorController* ic = inspectorController())
+ ic->webViewResized(IntSize());
return;
}
if (!m_metricsSupport)
m_metricsSupport = adoptPtr(new DeviceMetricsSupport(m_webViewImpl));
+
m_metricsSupport->setDeviceMetrics(width, height, fontScaleFactor, fitWindow);
+ if (InspectorController* ic = inspectorController()) {
+ WebSize size = m_webViewImpl->size();
+ ic->webViewResized(IntSize(size.width, size.height));
+ }
}
void WebDevToolsAgentImpl::autoZoomPageToFitWidth()
Modified: trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.h (129881 => 129882)
--- trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.h 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.h 2012-09-28 13:08:50 UTC (rev 129882)
@@ -76,7 +76,7 @@
virtual void didCreateScriptContext(WebFrameImpl*, int worldId);
virtual void mainFrameViewCreated(WebFrameImpl*);
virtual bool metricsOverridden();
- virtual void webViewResized();
+ virtual void webViewResized(const WebSize&);
// WebDevToolsAgent implementation.
virtual void attach();
Modified: trunk/Source/WebKit/chromium/src/WebDevToolsAgentPrivate.h (129881 => 129882)
--- trunk/Source/WebKit/chromium/src/WebDevToolsAgentPrivate.h 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsAgentPrivate.h 2012-09-28 13:08:50 UTC (rev 129882)
@@ -54,7 +54,7 @@
virtual bool metricsOverridden() = 0;
// WebViewImpl has been resized.
- virtual void webViewResized() = 0;
+ virtual void webViewResized(const WebSize&) = 0;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (129881 => 129882)
--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2012-09-28 12:56:55 UTC (rev 129881)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2012-09-28 13:08:50 UTC (rev 129882)
@@ -1521,9 +1521,9 @@
#endif
WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate();
- if (agentPrivate && agentPrivate->metricsOverridden())
- agentPrivate->webViewResized();
- else {
+ if (agentPrivate)
+ agentPrivate->webViewResized(newSize);
+ if (!agentPrivate || !agentPrivate->metricsOverridden()) {
WebFrameImpl* webFrame = mainFrameImpl();
if (webFrame->frameView())
webFrame->frameView()->resize(newSize.width, newSize.height);