Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010-2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2010-2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "config.h" | 31 #include "config.h" |
| 32 #include "WebDevToolsAgentImpl.h" | 32 #include "WebDevToolsAgentImpl.h" |
| 33 | 33 |
| 34 #include "InspectorBackendDispatcher.h" | 34 #include "InspectorBackendDispatcher.h" |
| 35 #include "InspectorFrontend.h" | 35 #include "InspectorFrontend.h" |
| 36 #include "InspectorProtocolVersion.h" | 36 #include "InspectorProtocolVersion.h" |
| 37 #include "RuntimeEnabledFeatures.h" | |
| 37 #include "WebDataSource.h" | 38 #include "WebDataSource.h" |
| 38 #include "WebDevToolsAgentClient.h" | 39 #include "WebDevToolsAgentClient.h" |
| 39 #include "WebFrameImpl.h" | 40 #include "WebFrameImpl.h" |
| 40 #include "WebInputEventConversion.h" | 41 #include "WebInputEventConversion.h" |
| 41 #include "WebMemoryUsageInfo.h" | 42 #include "WebMemoryUsageInfo.h" |
| 43 #include "WebSettings.h" | |
| 42 #include "WebViewClient.h" | 44 #include "WebViewClient.h" |
| 43 #include "WebViewImpl.h" | 45 #include "WebViewImpl.h" |
| 44 #include "bindings/v8/PageScriptDebugServer.h" | 46 #include "bindings/v8/PageScriptDebugServer.h" |
| 45 #include "bindings/v8/ScriptController.h" | 47 #include "bindings/v8/ScriptController.h" |
| 46 #include "bindings/v8/V8Binding.h" | 48 #include "bindings/v8/V8Binding.h" |
| 47 #include "bindings/v8/V8Utilities.h" | 49 #include "bindings/v8/V8Utilities.h" |
| 48 #include "core/dom/ExceptionCode.h" | 50 #include "core/dom/ExceptionCode.h" |
| 49 #include "core/fetch/MemoryCache.h" | 51 #include "core/fetch/MemoryCache.h" |
| 50 #include "core/inspector/InjectedScriptHost.h" | 52 #include "core/inspector/InjectedScriptHost.h" |
| 51 #include "core/inspector/InspectorController.h" | 53 #include "core/inspector/InspectorController.h" |
| 52 #include "core/page/Frame.h" | 54 #include "core/page/Frame.h" |
| 53 #include "core/page/FrameView.h" | 55 #include "core/page/FrameView.h" |
| 54 #include "core/page/Page.h" | 56 #include "core/page/Page.h" |
| 55 #include "core/page/PageGroup.h" | 57 #include "core/page/PageGroup.h" |
| 58 #include "core/page/Settings.h" | |
| 56 #include "core/platform/JSONValues.h" | 59 #include "core/platform/JSONValues.h" |
| 57 #include "core/platform/graphics/GraphicsContext.h" | 60 #include "core/platform/graphics/GraphicsContext.h" |
| 58 #include "core/platform/network/ResourceError.h" | 61 #include "core/platform/network/ResourceError.h" |
| 59 #include "core/platform/network/ResourceRequest.h" | 62 #include "core/platform/network/ResourceRequest.h" |
| 60 #include "core/platform/network/ResourceResponse.h" | 63 #include "core/platform/network/ResourceResponse.h" |
| 61 #include "core/rendering/RenderView.h" | 64 #include "core/rendering/RenderView.h" |
| 62 #include "public/platform/Platform.h" | 65 #include "public/platform/Platform.h" |
| 63 #include "public/platform/WebRect.h" | 66 #include "public/platform/WebRect.h" |
| 64 #include "public/platform/WebString.h" | 67 #include "public/platform/WebString.h" |
| 65 #include "public/platform/WebURL.h" | 68 #include "public/platform/WebURL.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 180 virtual void run() | 183 virtual void run() |
| 181 { | 184 { |
| 182 if (WebDevToolsAgent* webagent = m_descriptor->agent()) | 185 if (WebDevToolsAgent* webagent = m_descriptor->agent()) |
| 183 webagent->dispatchOnInspectorBackend(m_descriptor->message()); | 186 webagent->dispatchOnInspectorBackend(m_descriptor->message()); |
| 184 } | 187 } |
| 185 | 188 |
| 186 private: | 189 private: |
| 187 OwnPtr<WebDevToolsAgent::MessageDescriptor> m_descriptor; | 190 OwnPtr<WebDevToolsAgent::MessageDescriptor> m_descriptor; |
| 188 }; | 191 }; |
| 189 | 192 |
| 193 // FIXME: remove DeviceMetricsSupport. | |
|
pfeldman
2013/09/19 12:46:05
Do it right away.
| |
| 190 class DeviceMetricsSupport { | 194 class DeviceMetricsSupport { |
| 191 public: | 195 public: |
| 192 DeviceMetricsSupport(WebViewImpl* webView) | 196 DeviceMetricsSupport(WebViewImpl* webView) |
| 193 : m_webView(webView) | 197 : m_webView(webView) |
| 194 , m_fitWindow(false) | 198 , m_fitWindow(false) |
| 195 , m_originalZoomFactor(0) | 199 , m_originalZoomFactor(0) |
| 196 { | 200 { |
| 197 } | 201 } |
| 198 | 202 |
| 199 ~DeviceMetricsSupport() | 203 ~DeviceMetricsSupport() |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 351 double m_originalZoomFactor; | 355 double m_originalZoomFactor; |
| 352 }; | 356 }; |
| 353 | 357 |
| 354 WebDevToolsAgentImpl::WebDevToolsAgentImpl( | 358 WebDevToolsAgentImpl::WebDevToolsAgentImpl( |
| 355 WebViewImpl* webViewImpl, | 359 WebViewImpl* webViewImpl, |
| 356 WebDevToolsAgentClient* client) | 360 WebDevToolsAgentClient* client) |
| 357 : m_hostId(client->hostIdentifier()) | 361 : m_hostId(client->hostIdentifier()) |
| 358 , m_client(client) | 362 , m_client(client) |
| 359 , m_webViewImpl(webViewImpl) | 363 , m_webViewImpl(webViewImpl) |
| 360 , m_attached(false) | 364 , m_attached(false) |
| 365 , m_deviceMetricsEnabled(false) | |
|
pfeldman
2013/09/19 12:46:05
You need to initialize all booleans here.
dgozman
2013/09/19 13:59:38
Done.
| |
| 361 { | 366 { |
| 362 ASSERT(m_hostId > 0); | 367 ASSERT(m_hostId > 0); |
| 363 ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client); | 368 ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client); |
| 364 } | 369 } |
| 365 | 370 |
| 366 WebDevToolsAgentImpl::~WebDevToolsAgentImpl() | 371 WebDevToolsAgentImpl::~WebDevToolsAgentImpl() |
| 367 { | 372 { |
| 368 ClientMessageLoopAdapter::inspectedViewClosed(m_webViewImpl); | 373 ClientMessageLoopAdapter::inspectedViewClosed(m_webViewImpl); |
| 369 if (m_attached) | 374 if (m_attached) |
| 370 WebKit::Platform::current()->currentThread()->removeTaskObserver(this); | 375 WebKit::Platform::current()->currentThread()->removeTaskObserver(this); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 441 } | 446 } |
| 442 | 447 |
| 443 void WebDevToolsAgentImpl::mainFrameViewCreated(WebFrameImpl* webFrame) | 448 void WebDevToolsAgentImpl::mainFrameViewCreated(WebFrameImpl* webFrame) |
| 444 { | 449 { |
| 445 if (m_metricsSupport) | 450 if (m_metricsSupport) |
| 446 m_metricsSupport->applySizeOverrideIfNecessary(); | 451 m_metricsSupport->applySizeOverrideIfNecessary(); |
| 447 } | 452 } |
| 448 | 453 |
| 449 bool WebDevToolsAgentImpl::metricsOverridden() | 454 bool WebDevToolsAgentImpl::metricsOverridden() |
| 450 { | 455 { |
| 451 return !!m_metricsSupport; | 456 // FIXME: cleanup usages of this function and remove it. |
|
pfeldman
2013/09/19 12:46:05
ditto
| |
| 457 return false; | |
| 452 } | 458 } |
| 453 | 459 |
| 454 void WebDevToolsAgentImpl::webViewResized(const WebSize& size) | 460 void WebDevToolsAgentImpl::webViewResized(const WebSize& size) |
| 455 { | 461 { |
| 456 if (m_metricsSupport) | 462 if (m_metricsSupport) |
| 457 m_metricsSupport->webViewResized(); | 463 m_metricsSupport->webViewResized(); |
| 458 if (InspectorController* ic = inspectorController()) | 464 if (InspectorController* ic = inspectorController()) |
| 459 ic->webViewResized(m_metricsSupport ? IntSize(size.width, size.height) : IntSize()); | 465 ic->webViewResized(m_metricsSupport ? IntSize(size.width, size.height) : IntSize()); |
| 460 } | 466 } |
| 461 | 467 |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 480 } | 486 } |
| 481 if (WebInputEvent::isTouchEventType(inputEvent.type)) { | 487 if (WebInputEvent::isTouchEventType(inputEvent.type)) { |
| 482 PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(page->mainFram e()->view(), *static_cast<const WebTouchEvent*>(&inputEvent)); | 488 PlatformTouchEvent touchEvent = PlatformTouchEventBuilder(page->mainFram e()->view(), *static_cast<const WebTouchEvent*>(&inputEvent)); |
| 483 return ic->handleTouchEvent(page->mainFrame(), touchEvent); | 489 return ic->handleTouchEvent(page->mainFrame(), touchEvent); |
| 484 } | 490 } |
| 485 return false; | 491 return false; |
| 486 } | 492 } |
| 487 | 493 |
| 488 void WebDevToolsAgentImpl::overrideDeviceMetrics(int width, int height, float fo ntScaleFactor, bool fitWindow) | 494 void WebDevToolsAgentImpl::overrideDeviceMetrics(int width, int height, float fo ntScaleFactor, bool fitWindow) |
| 489 { | 495 { |
| 496 // FIXME: enable viewport after UI problems with pageScaleFactor will be fix ed. | |
| 497 bool enableViewport = false; | |
| 498 | |
| 499 bool needReload = false; | |
| 490 if (!width && !height) { | 500 if (!width && !height) { |
| 491 if (m_metricsSupport) | 501 if (m_deviceMetricsEnabled) { |
| 492 m_metricsSupport.clear(); | 502 needReload = true; |
| 493 if (InspectorController* ic = inspectorController()) | 503 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrol lbarsEnabled); |
| 494 ic->webViewResized(IntSize()); | 504 if (enableViewport) { |
| 495 return; | 505 RuntimeEnabledFeatures::setCSSViewportEnabled(m_isCSSViewportEna bled); |
| 506 m_webViewImpl->enableFixedLayoutMode(false); | |
| 507 m_webViewImpl->settings()->setViewportEnabled(false); | |
| 508 m_webViewImpl->page()->settings().setTextAutosizingEnabled(false ); | |
| 509 m_webViewImpl->setIgnoreViewportTagScaleLimits(false); | |
| 510 m_webViewImpl->setPageScaleFactorLimits(1.f, 1.f); | |
|
apavlov
2013/09/19 12:47:57
Is the float literal notation really required here
dgozman
2013/09/19 13:59:38
Done.
| |
| 511 } | |
| 512 m_webViewImpl->client()->emulateDevice(false /* enabled */, IntSize( ), IntRect(), 1.0f, false); | |
| 513 } | |
| 514 m_deviceMetricsEnabled = false; | |
| 515 } else { | |
| 516 if (!m_deviceMetricsEnabled) { | |
| 517 needReload = true; | |
| 518 | |
| 519 m_isOverlayScrollbarsEnabled = RuntimeEnabledFeatures::overlayScroll barsEnabled(); | |
| 520 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(true); | |
| 521 | |
| 522 if (enableViewport) { | |
| 523 m_isCSSViewportEnabled = RuntimeEnabledFeatures::cssViewportEnab led(); | |
| 524 RuntimeEnabledFeatures::setCSSViewportEnabled(true); | |
| 525 // FIXME: save and restore next two values. | |
|
apavlov
2013/09/19 12:47:57
Guess this comment should note that this should be
dgozman
2013/09/19 13:59:38
Nice catch! Thanks.
| |
| 526 m_webViewImpl->enableFixedLayoutMode(true); | |
| 527 m_webViewImpl->settings()->setViewportEnabled(true); | |
| 528 m_webViewImpl->page()->settings().setTextAutosizingEnabled(true) ; | |
|
apavlov
2013/09/19 12:47:57
This one is dubious. Text autosizing should be ena
dgozman
2013/09/19 13:59:38
Safari, Firefox and IE has this functionality. Add
| |
| 529 m_webViewImpl->setIgnoreViewportTagScaleLimits(fontScaleFactor > 1.f); | |
| 530 m_webViewImpl->setPageScaleFactorLimits(-1.f, -1.f); | |
| 531 } | |
| 532 } | |
| 533 if (enableViewport) | |
| 534 m_webViewImpl->page()->settings().setTextAutosizingFontScaleFactor(f ontScaleFactor); | |
| 535 | |
| 536 m_webViewImpl->client()->emulateDevice(true /* enabled */, IntSize(width , height), IntRect(0, 0, width, height), 2.0f, fitWindow); | |
| 537 m_deviceMetricsEnabled = true; | |
| 496 } | 538 } |
| 539 if (needReload && m_webViewImpl->mainFrameImpl()) | |
| 540 m_webViewImpl->mainFrameImpl()->reload(false /* ignoreCache */); | |
| 541 } | |
| 497 | 542 |
| 498 if (!m_metricsSupport) | 543 void WebDevToolsAgentImpl::setDeviceEmulationScales(bool enabled, float deviceSc aleFactor, float rootLayerScale) |
| 499 m_metricsSupport = adoptPtr(new DeviceMetricsSupport(m_webViewImpl)); | 544 { |
| 500 | 545 m_webViewImpl->setDeviceEmulationScales(enabled, deviceScaleFactor, rootLaye rScale); |
| 501 m_metricsSupport->setDeviceMetrics(width, height, fontScaleFactor, fitWindow ); | |
| 502 if (InspectorController* ic = inspectorController()) { | |
| 503 WebSize size = m_webViewImpl->size(); | |
| 504 ic->webViewResized(IntSize(size.width, size.height)); | |
| 505 } | |
| 506 } | 546 } |
| 507 | 547 |
| 508 void WebDevToolsAgentImpl::autoZoomPageToFitWidth() | 548 void WebDevToolsAgentImpl::autoZoomPageToFitWidth() |
| 509 { | 549 { |
| 510 if (m_metricsSupport) | 550 if (m_metricsSupport) |
| 511 m_metricsSupport->autoZoomPageToFitWidthOnNavigation(m_webViewImpl->main FrameImpl()->frame()); | 551 m_metricsSupport->autoZoomPageToFitWidthOnNavigation(m_webViewImpl->main FrameImpl()->frame()); |
| 512 } | 552 } |
| 513 | 553 |
| 514 void WebDevToolsAgentImpl::getAllocatedObjects(HashSet<const void*>& set) | 554 void WebDevToolsAgentImpl::getAllocatedObjects(HashSet<const void*>& set) |
| 515 { | 555 { |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 756 || commandName == InspectorBackendDispatcher::commandNames[InspectorBack endDispatcher::kProfiler_getCPUProfileCmd] | 796 || commandName == InspectorBackendDispatcher::commandNames[InspectorBack endDispatcher::kProfiler_getCPUProfileCmd] |
| 757 || commandName == InspectorBackendDispatcher::commandNames[InspectorBack endDispatcher::kHeapProfiler_getHeapSnapshotCmd]; | 797 || commandName == InspectorBackendDispatcher::commandNames[InspectorBack endDispatcher::kHeapProfiler_getHeapSnapshotCmd]; |
| 758 } | 798 } |
| 759 | 799 |
| 760 void WebDevToolsAgent::processPendingMessages() | 800 void WebDevToolsAgent::processPendingMessages() |
| 761 { | 801 { |
| 762 PageScriptDebugServer::shared().runPendingTasks(); | 802 PageScriptDebugServer::shared().runPendingTasks(); |
| 763 } | 803 } |
| 764 | 804 |
| 765 } // namespace WebKit | 805 } // namespace WebKit |
| OLD | NEW |