15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved. 3926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2013 Apple Inc. All rights reserved. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "Internals.h" 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "HTMLNames.h" 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "InspectorFrontendClientLocal.h" 32e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "InternalProfilers.h" 3381a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)#include "InternalRuntimeFlags.h" 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "InternalSettings.h" 357757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch#include "LayerRect.h" 367757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch#include "LayerRectList.h" 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "MallocStatistics.h" 38926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include "MockPagePopupDriver.h" 3981a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)#include "RuntimeEnabledFeatures.h" 40926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include "TypeConversions.h" 41df95704c49daea886ddad70775bda23618d6274dBen Murdoch#include "bindings/v8/ExceptionState.h" 4253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "bindings/v8/SerializedScriptValue.h" 43f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "bindings/v8/V8ThrowException.h" 4453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/StyleSheetContents.h" 457757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch#include "core/css/resolver/StyleResolver.h" 467757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch#include "core/css/resolver/ViewportStyleResolver.h" 4753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/ClientRect.h" 4853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/ClientRectList.h" 4953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/DOMStringList.h" 5053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/Document.h" 5153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/DocumentMarker.h" 5253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/DocumentMarkerController.h" 5353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/Element.h" 5453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/ExceptionCode.h" 55f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/dom/FullscreenElementStack.h" 5653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/NodeRenderingContext.h" 5753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/PseudoElement.h" 5853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/Range.h" 5953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/StaticNodeList.h" 6053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/TreeScope.h" 6153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/ViewportArguments.h" 62e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)#include "core/dom/shadow/ComposedShadowTreeWalker.h" 63e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)#include "core/dom/shadow/ContentDistributor.h" 64e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)#include "core/dom/shadow/ElementShadow.h" 65e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)#include "core/dom/shadow/SelectRuleFeatureSet.h" 66e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)#include "core/dom/shadow/ShadowRoot.h" 6753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/editing/Editor.h" 6853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/editing/SpellChecker.h" 6953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/editing/TextIterator.h" 7053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/history/BackForwardController.h" 7153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/history/HistoryItem.h" 7253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/FormController.h" 7353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLInputElement.h" 7453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLMediaElement.h" 7553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLSelectElement.h" 7653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLTextAreaElement.h" 7753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/shadow/HTMLContentElement.h" 7853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorClient.h" 7953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorConsoleAgent.h" 8053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorController.h" 8153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorCounters.h" 8253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorFrontendChannel.h" 8353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorInstrumentation.h" 8453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorOverlay.h" 8553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InstrumentingAgents.h" 8653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/loader/FrameLoader.h" 8753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/loader/cache/MemoryCache.h" 883464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch#include "core/loader/cache/ResourceFetcher.h" 8953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/Chrome.h" 9053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/ChromeClient.h" 9153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/DOMPoint.h" 9253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/DOMWindow.h" 9353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/EventHandler.h" 9453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/Frame.h" 9553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/FrameView.h" 9653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/Page.h" 97f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/page/PagePopupController.h" 9853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/PrintContext.h" 9953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/Settings.h" 10053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/animation/AnimationController.h" 10153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/scrolling/ScrollingCoordinator.h" 1025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "core/platform/ColorChooser.h" 10353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/Cursor.h" 10453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/Language.h" 105f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/platform/chromium/TraceEvent.h" 106f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/platform/graphics/GraphicsLayer.h" 10753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/graphics/IntRect.h" 108f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/platform/graphics/filters/FilterOperation.h" 109f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/platform/graphics/filters/FilterOperations.h" 110fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch#include "core/platform/graphics/gpu/SharedGraphicsContext3D.h" 111f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/platform/mock/PlatformSpeechSynthesizerMock.h" 112f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/rendering/RenderLayerBacking.h" 11353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderMenuList.h" 11453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderObject.h" 11553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderTreeAsText.h" 11653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/RenderView.h" 117f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "core/testing/GCObservation.h" 11853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/workers/WorkerThread.h" 119f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "modules/speech/DOMWindowSpeechSynthesis.h" 120f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include "modules/speech/SpeechSynthesis.h" 121e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)#include "weborigin/SchemeRegistry.h" 12281a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)#include "wtf/dtoa.h" 12381a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)#include "wtf/text/StringBuffer.h" 124f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)#include <v8.h> 125926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore { 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 128926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static MockPagePopupDriver* s_pagePopupDriver = 0; 129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)using namespace HTMLNames; 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InspectorFrontendChannelDummy : public InspectorFrontendChannel { 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) explicit InspectorFrontendChannelDummy(Page*); 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~InspectorFrontendChannelDummy() { } 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual bool sendMessageToFrontend(const String& message) OVERRIDE; 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page* m_frontendPage; 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)InspectorFrontendChannelDummy::InspectorFrontendChannelDummy(Page* page) 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_frontendPage(page) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool InspectorFrontendChannelDummy::sendMessageToFrontend(const String& message) 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return InspectorClient::doDispatchMessageOnFrontendPage(m_frontendPage, message); 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)static bool markerTypesFrom(const String& markerType, DocumentMarker::MarkerTypes& result) 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (markerType.isEmpty() || equalIgnoringCase(markerType, "all")) 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = DocumentMarker::AllMarkers(); 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (equalIgnoringCase(markerType, "Spelling")) 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = DocumentMarker::Spelling; 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (equalIgnoringCase(markerType, "Grammar")) 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = DocumentMarker::Grammar; 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (equalIgnoringCase(markerType, "TextMatch")) 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = DocumentMarker::TextMatch; 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)static SpellChecker* spellchecker(Document* document) 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame() || !document->frame()->editor()) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return document->frame()->editor()->spellChecker(); 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const char* Internals::internalsId = "internals"; 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)PassRefPtr<Internals> Internals::create(Document* document) 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return adoptRef(new Internals(document)); 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Internals::~Internals() 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1857757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch if (m_scrollingCoordinator) { 1867757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch m_scrollingCoordinator->removeTouchEventTargetRectsObserver(this); 1877757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch } 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::resetToConsistentState(Page* page) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(page); 193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 194e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) page->setDeviceScaleFactor(1); 195926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) page->setPageScaleFactor(1, IntPoint(0, 0)); 196926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) page->setPagination(Pagination()); 197926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) TextRun::setAllowsRoundingHacks(false); 198926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebCore::overrideUserPreferredLanguages(Vector<String>()); 199926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebCore::Settings::setUsesOverlayScrollbars(false); 200926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete s_pagePopupDriver; 201926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) s_pagePopupDriver = 0; 20293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) page->chrome().client()->resetPagePopupDriver(); 203926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!page->mainFrame()->editor()->isContinuousSpellCheckingEnabled()) 204926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) page->mainFrame()->editor()->toggleContinuousSpellChecking(); 20553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (page->mainFrame()->editor()->isOverwriteModeEnabled()) 20653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) page->mainFrame()->editor()->toggleOverwriteModeEnabled(); 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Internals::Internals(Document* document) 210591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch : ContextLifecycleObserver(document) 21181a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) , m_runtimeFlags(InternalRuntimeFlags::create()) 2120390b6f38fb8c48e6cda11a37640b83a6cbca5bdTorne (Richard Coles) , m_scrollingCoordinator(document->page() ? document->page()->scrollingCoordinator() : 0) 2137757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch , m_touchEventTargetRectUpdateCount(0) 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2157757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch if (m_scrollingCoordinator) { 2167757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch m_scrollingCoordinator->addTouchEventTargetRectsObserver(this); 2177757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch } 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Document* Internals::contextDocument() const 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 222926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return toDocument(scriptExecutionContext()); 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Frame* Internals::frame() const 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!contextDocument()) 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return contextDocument()->frame(); 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)InternalSettings* Internals::settings() const 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Document* document = contextDocument(); 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page* page = document->page(); 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!page) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return InternalSettings::from(page); 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24381a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)InternalRuntimeFlags* Internals::runtimeFlags() const 24481a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles){ 24581a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) return m_runtimeFlags.get(); 24681a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)} 24781a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) 248e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochInternalProfilers* Internals::profilers() 249e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{ 250e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!m_profilers) 251e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch m_profilers = InternalProfilers::create(); 252e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return m_profilers.get(); 253e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch} 254e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 255926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)unsigned Internals::workerThreadCount() const 256926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 257926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return WorkerThread::workerThreadCount(); 258926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 259926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)String Internals::address(Node* node) 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) char buf[32]; 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sprintf(buf, "%p", node); 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(buf); 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 268f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)PassRefPtr<GCObservation> Internals::observeGC(ScriptValue scriptValue) 269f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles){ 270f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) v8::Handle<v8::Value> observedValue = scriptValue.v8Value(); 271f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) ASSERT(!observedValue.IsEmpty()); 272f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) if (observedValue->IsNull() || observedValue->IsUndefined()) { 273f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) V8ThrowException::throwTypeError("value to observe is null or undefined", v8::Isolate::GetCurrent()); 274f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) return 0; 275f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) } 276f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 277f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) return GCObservation::create(observedValue); 278f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)} 279f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 280926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)bool Internals::isPreloaded(const String& url) 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 282926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Document* document = contextDocument(); 2833464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch return document->fetcher()->isPreloaded(url); 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 286926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)bool Internals::isLoadingFromMemoryCache(const String& url) 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 288926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!contextDocument()) 289926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 290fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch Resource* resource = memoryCache()->resourceForURL(contextDocument()->completeURL(url)); 291fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch return resource && resource->status() == Resource::Cached; 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)void Internals::crash() 29553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 29653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) CRASH(); 29753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 29853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 299df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<Element> Internals::createContentElement(ExceptionState& es) 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 301926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Document* document = contextDocument(); 302926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document) { 303df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 306926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 307926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return HTMLContentElement::create(document); 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 310df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::isValidContentSelect(Element* insertionPoint, ExceptionState& es) 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 312926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!insertionPoint || !insertionPoint->isInsertionPoint()) { 313df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 317926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return isHTMLContentElement(insertionPoint) && toHTMLContentElement(insertionPoint)->isSelectValid(); 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 320df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::treeScopeRootNode(Node* node, ExceptionState& es) 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 323df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return node->treeScope()->rootNode(); 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 330df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::parentTreeScope(Node* node, ExceptionState& es) 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 333df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const TreeScope* parentTreeScope = node->treeScope()->parentTreeScope(); 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return parentTreeScope ? parentTreeScope->rootNode() : 0; 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 340df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasSelectorForIdInShadow(Element* host, const String& idValue, ExceptionState& es) 341926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!host || !host->shadow()) { 343df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 344926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 345926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 346926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 347926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return host->shadow()->distributor().ensureSelectFeatureSet(host->shadow()).hasSelectorForId(idValue); 348926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 349926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 350df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasSelectorForClassInShadow(Element* host, const String& className, ExceptionState& es) 351926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 352926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!host || !host->shadow()) { 353df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 354926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 355926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 356926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 357926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return host->shadow()->distributor().ensureSelectFeatureSet(host->shadow()).hasSelectorForClass(className); 358926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 359926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 360df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasSelectorForAttributeInShadow(Element* host, const String& attributeName, ExceptionState& es) 361926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 362926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!host || !host->shadow()) { 363df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 364926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 365926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 366926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 367926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return host->shadow()->distributor().ensureSelectFeatureSet(host->shadow()).hasSelectorForAttribute(attributeName); 368926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 369926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 370df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasSelectorForPseudoClassInShadow(Element* host, const String& pseudoClass, ExceptionState& es) 371926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 372926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!host || !host->shadow()) { 373df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 374926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 375926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 376926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 377926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) const SelectRuleFeatureSet& featureSet = host->shadow()->distributor().ensureSelectFeatureSet(host->shadow()); 378926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (pseudoClass == "checked") 379926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return featureSet.hasSelectorForChecked(); 380926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (pseudoClass == "enabled") 381926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return featureSet.hasSelectorForEnabled(); 382926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (pseudoClass == "disabled") 383926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return featureSet.hasSelectorForDisabled(); 384926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (pseudoClass == "indeterminate") 385926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return featureSet.hasSelectorForIndeterminate(); 386926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (pseudoClass == "link") 387926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return featureSet.hasSelectorForLink(); 388926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (pseudoClass == "target") 389926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return featureSet.hasSelectorForTarget(); 390926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (pseudoClass == "visited") 391926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return featureSet.hasSelectorForVisited(); 392926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 393926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ASSERT_NOT_REACHED(); 394926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 395926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 396926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 397df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned short Internals::compareTreeScopePosition(const Node* node1, const Node* node2, ExceptionState& es) const 3985267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles){ 3995267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!node1 || !node2) { 400df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 4015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return 0; 4025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) } 4035267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) const TreeScope* treeScope1 = node1->isDocumentNode() ? static_cast<const TreeScope*>(toDocument(node1)) : 4045267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) node1->isShadowRoot() ? static_cast<const TreeScope*>(toShadowRoot(node1)) : 0; 4055267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) const TreeScope* treeScope2 = node2->isDocumentNode() ? static_cast<const TreeScope*>(toDocument(node2)) : 4065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) node2->isShadowRoot() ? static_cast<const TreeScope*>(toShadowRoot(node2)) : 0; 4075267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!treeScope1 || !treeScope2) { 408df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 4095267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return 0; 4105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) } 4115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return treeScope1->comparePosition(treeScope2); 4125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)} 4135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 414926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)unsigned Internals::numberOfActiveAnimations() const 415926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 416926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Frame* contextFrame = frame(); 417e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!RuntimeEnabledFeatures::webAnimationsCSSEnabled()) { 418e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (AnimationController* controller = contextFrame->animation()) 419e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return controller->numberOfActiveAnimations(contextFrame->document()); 420e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch } 421926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 422926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 423926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 424df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::suspendAnimations(Document* document, ExceptionState& es) const 425926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 426926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->frame()) { 427df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 428926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 429926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 430926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 431e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!RuntimeEnabledFeatures::webAnimationsCSSEnabled()) { 432e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch AnimationController* controller = document->frame()->animation(); 433e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!controller) 434e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return; 435926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 436e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch controller->suspendAnimations(); 437e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch } 438926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 439926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 440df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::resumeAnimations(Document* document, ExceptionState& es) const 441926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 442926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->frame()) { 443df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 444926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 445926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 446926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 447e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!RuntimeEnabledFeatures::webAnimationsCSSEnabled()) { 448e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch AnimationController* controller = document->frame()->animation(); 449e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!controller) 450e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return; 451926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 452e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch controller->resumeAnimations(); 453e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch } 454926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 455926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 456df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::pauseAnimations(double pauseTime, ExceptionState& es) 457926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 45881a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) if (pauseTime < 0) { 459df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 46081a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles) return; 461926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 462926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 463e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (!RuntimeEnabledFeatures::webAnimationsCSSEnabled()) 464e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch frame()->animation()->pauseAnimationsForTesting(pauseTime); 465926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 466926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 467df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasShadowInsertionPoint(const Node* root, ExceptionState& es) const 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (root && root->isShadowRoot()) 47083750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch return toShadowRoot(root)->containsShadowElements(); 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 472df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 476df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasContentElement(const Node* root, ExceptionState& es) const 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (root && root->isShadowRoot()) 47983750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch return toShadowRoot(root)->containsContentElements(); 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 481df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 485df95704c49daea886ddad70775bda23618d6274dBen Murdochsize_t Internals::countElementShadow(const Node* root, ExceptionState& es) const 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!root || !root->isShadowRoot()) { 488df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49183750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch if (const ScopeContentDistribution* distribution = toShadowRoot(root)->scopeDistribution()) 49283750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch return distribution->numberOfElementShadowChildren(); 49383750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch return 0; 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 496df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::attached(Node* node, ExceptionState& es) 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 499df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return node->attached(); 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 506df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::nextSiblingByWalker(Node* node, ExceptionState& es) 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 509df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ComposedShadowTreeWalker walker(node); 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) walker.nextSibling(); 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return walker.get(); 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 517df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::firstChildByWalker(Node* node, ExceptionState& es) 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 520df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ComposedShadowTreeWalker walker(node); 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) walker.firstChild(); 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return walker.get(); 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 528df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::lastChildByWalker(Node* node, ExceptionState& es) 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 531df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ComposedShadowTreeWalker walker(node); 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) walker.lastChild(); 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return walker.get(); 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 539df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::nextNodeByWalker(Node* node, ExceptionState& es) 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 542df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ComposedShadowTreeWalker walker(node); 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) walker.next(); 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return walker.get(); 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 550df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::previousNodeByWalker(Node* node, ExceptionState& es) 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 553df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ComposedShadowTreeWalker walker(node); 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) walker.previous(); 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return walker.get(); 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 561df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::elementRenderTreeAsText(Element* element, ExceptionState& es) 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) { 564df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String representation = externalRepresentation(element); 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (representation.isEmpty()) { 570df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return representation; 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 577df95704c49daea886ddad70775bda23618d6274dBen Murdochsize_t Internals::numberOfScopedHTMLStyleChildren(const Node* scope, ExceptionState& es) const 5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (scope && (scope->isElementNode() || scope->isShadowRoot())) 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return scope->numberOfScopedHTMLStyleChildren(); 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 582df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 586df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<CSSComputedStyleDeclaration> Internals::computedStyleIncludingVisitedInfo(Node* node, ExceptionState& es) const 587926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 588926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!node) { 589df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 590926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 591926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 592926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 593926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool allowVisitedStyle = true; 594926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return CSSComputedStyleDeclaration::create(node, allowVisitedStyle); 595926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 596926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 597df95704c49daea886ddad70775bda23618d6274dBen MurdochShadowRoot* Internals::ensureShadowRoot(Element* host, ExceptionState& es) 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!host) { 600df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (ElementShadow* shadow = host->shadow()) 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return shadow->youngestShadowRoot(); 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 607df95704c49daea886ddad70775bda23618d6274dBen Murdoch return host->createShadowRoot(es).get(); 608926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 609926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 610df95704c49daea886ddad70775bda23618d6274dBen MurdochShadowRoot* Internals::shadowRoot(Element* host, ExceptionState& es) 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // FIXME: Internals::shadowRoot() in tests should be converted to youngestShadowRoot() or oldestShadowRoot(). 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // https://bugs.webkit.org/show_bug.cgi?id=78465 614df95704c49daea886ddad70775bda23618d6274dBen Murdoch return youngestShadowRoot(host, es); 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 617df95704c49daea886ddad70775bda23618d6274dBen MurdochShadowRoot* Internals::youngestShadowRoot(Element* host, ExceptionState& es) 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!host) { 620df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (ElementShadow* shadow = host->shadow()) 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return shadow->youngestShadowRoot(); 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 629df95704c49daea886ddad70775bda23618d6274dBen MurdochShadowRoot* Internals::oldestShadowRoot(Element* host, ExceptionState& es) 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!host) { 632df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (ElementShadow* shadow = host->shadow()) 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return shadow->oldestShadowRoot(); 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 641df95704c49daea886ddad70775bda23618d6274dBen MurdochShadowRoot* Internals::youngerShadowRoot(Node* shadow, ExceptionState& es) 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!shadow || !shadow->isShadowRoot()) { 644df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return toShadowRoot(shadow)->youngerShadowRoot(); 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 651df95704c49daea886ddad70775bda23618d6274dBen MurdochShadowRoot* Internals::olderShadowRoot(Node* shadow, ExceptionState& es) 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!shadow || !shadow->isShadowRoot()) { 654df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return toShadowRoot(shadow)->olderShadowRoot(); 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 661df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::shadowRootType(const Node* root, ExceptionState& es) const 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!root || !root->isShadowRoot()) { 664df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (toShadowRoot(root)->type()) { 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case ShadowRoot::UserAgentShadowRoot: 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String("UserAgentShadowRoot"); 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case ShadowRoot::AuthorShadowRoot: 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String("AuthorShadowRoot"); 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) default: 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT_NOT_REACHED(); 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String("Unknown"); 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 679df95704c49daea886ddad70775bda23618d6274dBen MurdochElement* Internals::includerFor(Node* node, ExceptionState& es) 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 682df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6863464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch NodeRenderingTraversal::ParentDetails parentDetails; 6873464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch NodeRenderingTraversal::parent(node, &parentDetails); 6883464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch return parentDetails.insertionPoint(); 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 691df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::shadowPseudoId(Element* element, ExceptionState& es) 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) { 694df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return element->shadowPseudoId().string(); 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 701df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setShadowPseudoId(Element* element, const String& id, ExceptionState& es) 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) { 704df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 708e6d4491e48613634a83c1957c72759da80987961Ben Murdoch return element->setPart(id); 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)String Internals::visiblePlaceholder(Element* element) 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 713926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (element && isHTMLTextFormControlElement(element)) { 714926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (toHTMLTextFormControlElement(element)->placeholderShouldBeVisible()) 715926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return toHTMLTextFormControlElement(element)->placeholderElement()->textContent(); 716926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 717926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::selectColorInColorChooser(Element* element, const String& colorValue) 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element->hasTagName(inputTag)) 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 72583750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch toHTMLInputElement(element)->selectColorInColorChooser(StyleColor(colorValue).color()); 7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 728df95704c49daea886ddad70775bda23618d6274dBen MurdochVector<String> Internals::formControlStateOfPreviousHistoryItem(ExceptionState& es) 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) HistoryItem* mainItem = frame()->loader()->history()->previousItem(); 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!mainItem) { 732df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 733926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return Vector<String>(); 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String uniqueName = frame()->tree()->uniqueName(); 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mainItem->target() != uniqueName && !mainItem->childItemWithTarget(uniqueName)) { 737df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 738926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return Vector<String>(); 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 740926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return mainItem->target() == uniqueName ? mainItem->documentState() : mainItem->childItemWithTarget(uniqueName)->documentState(); 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 743df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setFormControlStateOfPreviousHistoryItem(const Vector<String>& state, ExceptionState& es) 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) HistoryItem* mainItem = frame()->loader()->history()->previousItem(); 746926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!mainItem) { 747df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String uniqueName = frame()->tree()->uniqueName(); 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (mainItem->target() == uniqueName) 752926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) mainItem->setDocumentState(state); 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (HistoryItem* subItem = mainItem->childItemWithTarget(uniqueName)) 754926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) subItem->setDocumentState(state); 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 756df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 759926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void Internals::enableMockSpeechSynthesizer() 760926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 761926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Document* document = contextDocument(); 762926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->domWindow()) 763926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 764926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) SpeechSynthesis* synthesis = DOMWindowSpeechSynthesis::speechSynthesis(document->domWindow()); 765926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!synthesis) 766926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 76753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 768926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) synthesis->setPlatformSynthesizer(PlatformSpeechSynthesizerMock::create(synthesis)); 769926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 77053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 771df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setEnableMockPagePopup(bool enabled, ExceptionState& es) 772926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 773926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Document* document = contextDocument(); 77493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!document || !document->page()) 775926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 776926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Page* page = document->page(); 777926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!enabled) { 77893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) page->chrome().client()->resetPagePopupDriver(); 779926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 780926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 781926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!s_pagePopupDriver) 782926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) s_pagePopupDriver = MockPagePopupDriver::create(page->mainFrame()).leakPtr(); 78393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) page->chrome().client()->setPagePopupDriver(s_pagePopupDriver); 784926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 785926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)PassRefPtr<PagePopupController> Internals::pagePopupController() 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 788926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return s_pagePopupDriver ? s_pagePopupDriver->pagePopupController() : 0; 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 791df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<ClientRect> Internals::absoluteCaretBounds(ExceptionState& es) 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 793926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Document* document = contextDocument(); 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame() || !document->frame()->selection()) { 795df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRect::create(); 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRect::create(document->frame()->selection()->absoluteCaretBounds()); 8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 802df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<ClientRect> Internals::boundingBox(Element* element, ExceptionState& es) 8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) { 805df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRect::create(); 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) element->document()->updateLayoutIgnorePendingStylesheets(); 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RenderObject* renderer = element->renderer(); 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!renderer) 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRect::create(); 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRect::create(renderer->absoluteBoundingBoxRectIgnoringTransforms()); 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 816df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<ClientRectList> Internals::inspectorHighlightRects(Document* document, ExceptionState& es) 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->page() || !document->page()->inspectorController()) { 819df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRectList::create(); 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Highlight highlight; 8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document->page()->inspectorController()->getHighlight(&highlight); 8255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRectList::create(highlight.quads); 8265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 828df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned Internals::markerCountForNode(Node* node, const String& markerType, ExceptionState& es) 8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 831df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 8325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DocumentMarker::MarkerTypes markerTypes = 0; 8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!markerTypesFrom(markerType, markerTypes)) { 837df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(SyntaxError); 8385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return node->document()->markers()->markersFor(node, markerTypes).size(); 8425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 844df95704c49daea886ddad70775bda23618d6274dBen MurdochDocumentMarker* Internals::markerAt(Node* node, const String& markerType, unsigned index, ExceptionState& es) 8455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!node) { 847df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DocumentMarker::MarkerTypes markerTypes = 0; 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!markerTypesFrom(markerType, markerTypes)) { 853df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(SyntaxError); 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Vector<DocumentMarker*> markers = node->document()->markers()->markersFor(node, markerTypes); 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (markers.size() <= index) 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return markers[index]; 8615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 863df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<Range> Internals::markerRangeForNode(Node* node, const String& markerType, unsigned index, ExceptionState& es) 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 865df95704c49daea886ddad70775bda23618d6274dBen Murdoch DocumentMarker* marker = markerAt(node, markerType, index, es); 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!marker) 8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 8685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Range::create(node->document(), node, marker->startOffset(), node, marker->endOffset()); 8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 871df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::markerDescriptionForNode(Node* node, const String& markerType, unsigned index, ExceptionState& es) 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 873df95704c49daea886ddad70775bda23618d6274dBen Murdoch DocumentMarker* marker = markerAt(node, markerType, index, es); 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!marker) 8755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return marker->description(); 8775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::addTextMatchMarker(const Range* range, bool isActive) 8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) range->ownerDocument()->updateLayoutIgnorePendingStylesheets(); 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) range->ownerDocument()->markers()->addTextMatchMarker(range, isActive); 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 885df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setScrollViewPosition(Document* document, long x, long y, ExceptionState& es) 8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->view()) { 888df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 8895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FrameView* frameView = document->view(); 8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool constrainsScrollingToContentEdgeOldValue = frameView->constrainsScrollingToContentEdge(); 8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool scrollbarsSuppressedOldValue = frameView->scrollbarsSuppressed(); 8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->setConstrainsScrollingToContentEdge(false); 8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->setScrollbarsSuppressed(false); 8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->setScrollOffsetFromInternals(IntPoint(x, y)); 8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->setScrollbarsSuppressed(scrollbarsSuppressedOldValue); 9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->setConstrainsScrollingToContentEdge(constrainsScrollingToContentEdgeOldValue); 9015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 903df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setPagination(Document* document, const String& mode, int gap, int pageLength, ExceptionState& es) 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 905926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->page()) { 906df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 907926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 908926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 909926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Page* page = document->page(); 910926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 911926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Pagination pagination; 912926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (mode == "Unpaginated") 913926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) pagination.mode = Pagination::Unpaginated; 914926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else if (mode == "LeftToRightPaginated") 915926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) pagination.mode = Pagination::LeftToRightPaginated; 916926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else if (mode == "RightToLeftPaginated") 917926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) pagination.mode = Pagination::RightToLeftPaginated; 918926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else if (mode == "TopToBottomPaginated") 919926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) pagination.mode = Pagination::TopToBottomPaginated; 920926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else if (mode == "BottomToTopPaginated") 921926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) pagination.mode = Pagination::BottomToTopPaginated; 922926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) else { 923df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(SyntaxError); 924926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 925926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 926926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 927926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) pagination.gap = gap; 928926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) pagination.pageLength = pageLength; 929926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) page->setPagination(pagination); 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 932df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::configurationForViewport(Document* document, float, int deviceWidth, int deviceHeight, int availableWidth, int availableHeight, ExceptionState& es) 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 934926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->page()) { 935df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 936926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return String(); 937926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 938926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Page* page = document->page(); 939926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 9407757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch // Update initial viewport size. 9417757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch IntSize initialViewportSize(availableWidth, availableHeight); 9427757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch document->page()->mainFrame()->view()->setFrameRect(IntRect(IntPoint::zero(), initialViewportSize)); 9437757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch document->styleResolver()->viewportStyleResolver()->resolve(); 94493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 945926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ViewportArguments arguments = page->viewportArguments(); 9467757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch PageScaleConstraints constraints = arguments.resolve(initialViewportSize, FloatSize(deviceWidth, deviceHeight), 980 /* defaultLayoutWidthForNonMobilePages */); 9477757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 94893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) constraints.fitToContentsWidth(constraints.layoutSize.width(), availableWidth); 949926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 9507757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch StringBuilder builder; 9517757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 9527757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.appendLiteral("viewport size "); 9537757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.append(String::number(constraints.layoutSize.width())); 9547757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.append('x'); 9557757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.append(String::number(constraints.layoutSize.height())); 9567757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 9577757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.appendLiteral(" scale "); 9587757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.append(String::number(constraints.initialScale)); 9597757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.appendLiteral(" with limits ["); 9607757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.append(String::number(constraints.minimumScale)); 9617757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.appendLiteral(", "); 9627757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.append(String::number(constraints.maximumScale)); 9637757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 9647757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.appendLiteral("] and userScalable "); 9657757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch builder.append(arguments.userZoom ? "true" : "false"); 9667757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 9677757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch return builder.toString(); 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 970df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::wasLastChangeUserEdit(Element* textField, ExceptionState& es) 9715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!textField) { 973df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 9745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 9755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 977521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (textField->hasTagName(inputTag)) 978521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return toHTMLInputElement(textField)->lastChangeWasUserEdit(); 9795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // FIXME: We should be using hasTagName instead but Windows port doesn't link QualifiedNames properly. 9815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (textField->tagName() == "TEXTAREA") 982e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return toHTMLTextAreaElement(textField)->lastChangeWasUserEdit(); 9835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 984df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidNodeTypeError); 9855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 9865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 988df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::elementShouldAutoComplete(Element* element, ExceptionState& es) 989926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 990926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!element) { 991df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 992926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 993926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 994926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 995521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (element->hasTagName(inputTag)) 996521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return toHTMLInputElement(element)->shouldAutocomplete(); 997926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 998df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidNodeTypeError); 999926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 1000926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1001926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1002df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::suggestedValue(Element* element, ExceptionState& es) 10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) { 1005df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1009521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!element->hasTagName(inputTag)) { 1010df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidNodeTypeError); 10115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 10125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1014521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return toHTMLInputElement(element)->suggestedValue(); 10155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1017df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setSuggestedValue(Element* element, const String& value, ExceptionState& es) 10185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) { 1020df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 10215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1024521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!element->hasTagName(inputTag)) { 1025df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidNodeTypeError); 10265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1029521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) toHTMLInputElement(element)->setSuggestedValue(value); 10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1032df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setEditingValue(Element* element, const String& value, ExceptionState& es) 10335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) { 1035df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 10365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1039521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!element->hasTagName(inputTag)) { 1040df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidNodeTypeError); 10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1044521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) toHTMLInputElement(element)->setEditingValue(value); 10455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1047df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setAutofilled(Element* element, bool enabled, ExceptionState& es) 1048926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1049521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!element->hasTagName(inputTag)) { 1050df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1051926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1052926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1053521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) toHTMLInputElement(element)->setAutofilled(enabled); 1054926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1055926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1056df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::scrollElementToRect(Element* element, long x, long y, long w, long h, ExceptionState& es) 10575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element || !element->document() || !element->document()->view()) { 1059df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FrameView* frameView = element->document()->view(); 10635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->scrollElementToRect(element, IntRect(x, y, w, h)); 10645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1066df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::paintControlTints(Document* document, ExceptionState& es) 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->view()) { 1069df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 10705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FrameView* frameView = document->view(); 10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->paintControlTints(); 10755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1077df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<Range> Internals::rangeFromLocationAndLength(Element* scope, int rangeLocation, int rangeLength, ExceptionState& es) 10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!scope) { 1080df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 10815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 10825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return TextIterator::rangeFromLocationAndLength(scope, rangeLocation, rangeLength); 10855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1087df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned Internals::locationFromRange(Element* scope, const Range* range, ExceptionState& es) 10885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!scope || !range) { 1090df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 10915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 10925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size_t location = 0; 10955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size_t unusedLength = 0; 10965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TextIterator::getLocationAndLengthFromRange(scope, range, location, unusedLength); 10975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return location; 10985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1100df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned Internals::lengthFromRange(Element* scope, const Range* range, ExceptionState& es) 11015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 11025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!scope || !range) { 1103df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 11045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 11055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size_t unusedLocation = 0; 11085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size_t length = 0; 11095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TextIterator::getLocationAndLengthFromRange(scope, range, unusedLocation, length); 11105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 11115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 11125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1113df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::rangeAsText(const Range* range, ExceptionState& es) 11145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 11155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!range) { 1116df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 11175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 11185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return range->text(); 11215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 11225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1123df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<DOMPoint> Internals::touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height, Document* document, ExceptionState& es) 11245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 11255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) { 1126df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 11275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 11285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 113093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) document->updateLayout(); 113193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 11325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntSize radius(width / 2, height / 2); 11335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint point(x + radius.width(), y + radius.height()); 11345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* targetNode; 11365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint adjustedPoint; 11375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool foundNode = document->frame()->eventHandler()->bestClickableNodeForTouchPoint(point, radius, adjustedPoint, targetNode); 11395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (foundNode) 114053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return DOMPoint::create(adjustedPoint.x(), adjustedPoint.y()); 11415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 11435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 11445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1145df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::touchNodeAdjustedToBestClickableNode(long x, long y, long width, long height, Document* document, ExceptionState& es) 11465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 11475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) { 1148df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 11495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 11505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 115293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) document->updateLayout(); 115393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 11545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntSize radius(width / 2, height / 2); 11555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint point(x + radius.width(), y + radius.height()); 11565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* targetNode; 11585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint adjustedPoint; 11595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document->frame()->eventHandler()->bestClickableNodeForTouchPoint(point, radius, adjustedPoint, targetNode); 11605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return targetNode; 11615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 11625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1163df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<DOMPoint> Internals::touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document* document, ExceptionState& es) 11645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 11655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) { 1166df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 11675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 11685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 117093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) document->updateLayout(); 117193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 11725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntSize radius(width / 2, height / 2); 11735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint point(x + radius.width(), y + radius.height()); 11745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* targetNode = 0; 11765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint adjustedPoint; 11775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool foundNode = document->frame()->eventHandler()->bestContextMenuNodeForTouchPoint(point, radius, adjustedPoint, targetNode); 11795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (foundNode) 118053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return DOMPoint::create(adjustedPoint.x(), adjustedPoint.y()); 11815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 118253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return DOMPoint::create(x, y); 11835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 11845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1185df95704c49daea886ddad70775bda23618d6274dBen MurdochNode* Internals::touchNodeAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document* document, ExceptionState& es) 11865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 11875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) { 1188df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 11895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 11905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 119293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) document->updateLayout(); 119393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 11945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntSize radius(width / 2, height / 2); 11955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint point(x + radius.width(), y + radius.height()); 11965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* targetNode = 0; 11985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint adjustedPoint; 11995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document->frame()->eventHandler()->bestContextMenuNodeForTouchPoint(point, radius, adjustedPoint, targetNode); 12005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return targetNode; 12015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1203df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<ClientRect> Internals::bestZoomableAreaForTouchPoint(long x, long y, long width, long height, Document* document, ExceptionState& es) 12045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 12055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) { 1206df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 12075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 12085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 121093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) document->updateLayout(); 121193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 12125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntSize radius(width / 2, height / 2); 12135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntPoint point(x + radius.width(), y + radius.height()); 12145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Node* targetNode; 12165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IntRect zoomableArea; 12175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool foundNode = document->frame()->eventHandler()->bestZoomableAreaForTouchPoint(point, radius, zoomableArea, targetNode); 12185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (foundNode) 12195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ClientRect::create(zoomableArea); 12205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 12225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1225df95704c49daea886ddad70775bda23618d6274dBen Murdochint Internals::lastSpellCheckRequestSequence(Document* document, ExceptionState& es) 12265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 12275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SpellChecker* checker = spellchecker(document); 12285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!checker) { 1230df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 12315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 12325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return checker->lastRequestSequence(); 12355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1237df95704c49daea886ddad70775bda23618d6274dBen Murdochint Internals::lastSpellCheckProcessedSequence(Document* document, ExceptionState& es) 12385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 12395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SpellChecker* checker = spellchecker(document); 12405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!checker) { 1242df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 12435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 12445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return checker->lastProcessedSequence(); 12475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Vector<String> Internals::userPreferredLanguages() const 12505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1251926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return WebCore::userPreferredLanguages(); 12525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::setUserPreferredLanguages(const Vector<String>& languages) 12555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1256926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebCore::overrideUserPreferredLanguages(languages); 12575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1259df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned Internals::wheelEventHandlerCount(Document* document, ExceptionState& es) 12605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 12615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) { 1262df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 12635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 12645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return document->wheelEventHandlerCount(); 12675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 12685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1269df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned Internals::touchEventHandlerCount(Document* document, ExceptionState& es) 12705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 12715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) { 1272df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 12735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 12745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1276926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) const TouchEventTargetSet* touchHandlers = document->touchEventTargets(); 1277926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!touchHandlers) 1278926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 1279926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1280926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) unsigned count = 0; 1281926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (TouchEventTargetSet::const_iterator iter = touchHandlers->begin(); iter != touchHandlers->end(); ++iter) 1282926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) count += iter->value; 1283926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return count; 1284926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1285926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1286df95704c49daea886ddad70775bda23618d6274dBen MurdochLayerRectList* Internals::touchEventTargetLayerRects(Document* document, ExceptionState& es) 1287926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 12887757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch if (!document || !document->view() || !document->page() || document != contextDocument()) { 1289df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1290926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 1291926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1292926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 12937757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch // Do any pending layouts (which may call touchEventTargetRectsChange) to ensure this 12947757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch // really takes any previous changes into account. 12957757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch document->updateLayout(); 12967757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch return m_currentTouchEventRects.get(); 12977757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch} 1298926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1299df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned Internals::touchEventTargetLayerRectsUpdateCount(Document* document, ExceptionState& es) 13007757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch{ 13017757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch if (!document || !document->view() || !document->page() || document != contextDocument()) { 1302df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 13037757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch return 0; 13047757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch } 13057757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 13067757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch // Do any pending layouts to ensure this really takes any previous changes into account. 13077757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch document->updateLayout(); 1308926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 13097757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch return m_touchEventTargetRectUpdateCount; 13107757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch} 1311926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 13127757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdochvoid Internals::touchEventTargetRectsChanged(const LayerHitTestRects& rects) 13137757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch{ 1314f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) // When profiling content_shell, it can be handy to exclude this time (since it's only 1315f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) // present for testing / debugging). 1316f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) TRACE_EVENT0("input", "Internals::touchEventTargetRectsChanged"); 1317f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 13187757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch m_touchEventTargetRectUpdateCount++; 13197757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 13207757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch // Since it's not safe to hang onto the pointers in a LayerHitTestRects, we immediately 13217757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch // copy into a LayerRectList. 13227757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch m_currentTouchEventRects = LayerRectList::create(); 13237757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch for (LayerHitTestRects::const_iterator iter = rects.begin(); iter != rects.end(); ++iter) { 13247757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch for (size_t i = 0; i < iter->value.size(); ++i) { 13257757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch m_currentTouchEventRects->append(iter->key->renderer()->node(), ClientRect::create(enclosingIntRect(iter->value[i]))); 13267757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch } 13277757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch } 13285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 13295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 133053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)PassRefPtr<NodeList> Internals::nodesFromRect(Document* document, int centerX, int centerY, unsigned topPadding, unsigned rightPadding, 1331df95704c49daea886ddad70775bda23618d6274dBen Murdoch unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent, ExceptionState& es) const 13325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 13335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame() || !document->frame()->view()) { 1334df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 13355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 13365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 13375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 133853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) Frame* frame = document->frame(); 133953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) FrameView* frameView = document->view(); 134053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) RenderView* renderView = document->renderView(); 134153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 134253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!renderView) 134353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 0; 134453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 134553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) float zoomFactor = frame->pageZoomFactor(); 134653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) LayoutPoint point = roundedLayoutPoint(FloatPoint(centerX * zoomFactor + frameView->scrollX(), centerY * zoomFactor + frameView->scrollY())); 134753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1348926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active; 1349926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (ignoreClipping) 1350926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) hitType |= HitTestRequest::IgnoreClipping; 135153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!allowShadowContent) 135253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) hitType |= HitTestRequest::DisallowShadowContent; 1353926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (allowChildFrameContent) 1354926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) hitType |= HitTestRequest::AllowChildFrameContent; 1355926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 135653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) HitTestRequest request(hitType); 135753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 135853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) // When ignoreClipping is false, this method returns null for coordinates outside of the viewport. 135953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!request.ignoreClipping() && !frameView->visibleContentRect().intersects(HitTestLocation::rectForPoint(point, topPadding, rightPadding, bottomPadding, leftPadding))) 136053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 0; 136153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 136253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) Vector<RefPtr<Node> > matches; 136353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 136453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) // Need padding to trigger a rect based hit test, but we want to return a NodeList 136553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) // so we special case this. 136653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!topPadding && !rightPadding && !bottomPadding && !leftPadding) { 136753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) HitTestResult result(point); 136853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) renderView->hitTest(request, result); 136953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (result.innerNode()) 137053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) matches.append(result.innerNode()->deprecatedShadowAncestorNode()); 137153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } else { 137253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) HitTestResult result(point, topPadding, rightPadding, bottomPadding, leftPadding); 137353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) renderView->hitTest(request, result); 137453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) copyToVector(result.rectBasedTestResult(), matches); 137553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 137653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 137753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return StaticNodeList::adopt(matches); 13785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 13795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::emitInspectorDidBeginFrame() 13815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1382926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorController* inspectorController = contextDocument()->frame()->page()->inspectorController(); 1383926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) inspectorController->didBeginFrame(); 13845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 13855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::emitInspectorDidCancelFrame() 13875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1388926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorController* inspectorController = contextDocument()->frame()->page()->inspectorController(); 1389926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) inspectorController->didCancelFrame(); 13905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 13915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1392df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasSpellingMarker(Document* document, int from, int length, ExceptionState&) 13935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 13945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) 13955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 13965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return document->frame()->editor()->selectionStartHasMarkerFor(DocumentMarker::Spelling, from, length); 13985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 139953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1400df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setContinuousSpellCheckingEnabled(bool enabled, ExceptionState&) 1401926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1402926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!contextDocument() || !contextDocument()->frame() || !contextDocument()->frame()->editor()) 1403926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1404926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1405926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (enabled != contextDocument()->frame()->editor()->isContinuousSpellCheckingEnabled()) 1406926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) contextDocument()->frame()->editor()->toggleContinuousSpellChecking(); 1407926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1408926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1409df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::isOverwriteModeEnabled(Document* document, ExceptionState&) 141053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 141153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!document || !document->frame()) 141253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 0; 141353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 141453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return document->frame()->editor()->isOverwriteModeEnabled(); 141553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 141653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1417df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::toggleOverwriteModeEnabled(Document* document, ExceptionState&) 141853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 141953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!document || !document->frame()) 142053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 142153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 142253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) document->frame()->editor()->toggleOverwriteModeEnabled(); 142353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 142453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 14255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)unsigned Internals::numberOfLiveNodes() const 14265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 14275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return InspectorCounters::counterValue(InspectorCounters::NodeCounter); 14285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 14295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)unsigned Internals::numberOfLiveDocuments() const 14315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 14325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return InspectorCounters::counterValue(InspectorCounters::DocumentCounter); 14335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 14345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Vector<String> Internals::consoleMessageArgumentCounts(Document* document) const 14365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 14375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InstrumentingAgents* instrumentingAgents = instrumentationForPage(document->page()); 14385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!instrumentingAgents) 14395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Vector<String>(); 14405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorConsoleAgent* consoleAgent = instrumentingAgents->inspectorConsoleAgent(); 14415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!consoleAgent) 14425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Vector<String>(); 14435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Vector<unsigned> counts = consoleAgent->consoleMessageArgumentCounts(); 14445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Vector<String> result(counts.size()); 14455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (size_t i = 0; i < counts.size(); i++) 14465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result[i] = String::number(counts[i]); 14475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 14485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 14495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)PassRefPtr<DOMWindow> Internals::openDummyInspectorFrontend(const String& url) 14515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 14525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page* page = contextDocument()->frame()->page(); 14535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(page); 14545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14557757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch DOMWindow* window = page->mainFrame()->domWindow(); 14565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(window); 14575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_frontendWindow = window->open(url, "", "", window, window); 14595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_frontendWindow); 14605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page* frontendPage = m_frontendWindow->document()->page(); 14625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(frontendPage); 14635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 146453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) OwnPtr<InspectorFrontendClientLocal> frontendClient = adoptPtr(new InspectorFrontendClientLocal(page->inspectorController(), frontendPage)); 14655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frontendPage->inspectorController()->setInspectorFrontendClient(frontendClient.release()); 14675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_frontendChannel = adoptPtr(new InspectorFrontendChannelDummy(frontendPage)); 14695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) page->inspectorController()->connectFrontend(m_frontendChannel.get()); 14715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m_frontendWindow; 14735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 14745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::closeDummyInspectorFrontend() 14765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 14775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page* page = contextDocument()->frame()->page(); 14785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(page); 14795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_frontendWindow); 14805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) page->inspectorController()->disconnectFrontend(); 14825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_frontendChannel.release(); 14845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_frontendWindow->close(m_frontendWindow->scriptExecutionContext()); 14865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_frontendWindow.release(); 14875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 14885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1489e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochVector<unsigned long> Internals::setMemoryCacheCapacities(unsigned long minDeadBytes, unsigned long maxDeadBytes, unsigned long totalBytes) 1490e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{ 1491e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch Vector<unsigned long> result; 1492e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch result.append(memoryCache()->minDeadCapacity()); 1493e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch result.append(memoryCache()->maxDeadCapacity()); 1494e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch result.append(memoryCache()->capacity()); 1495e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch memoryCache()->setCapacities(minDeadBytes, maxDeadBytes, totalBytes); 1496e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return result; 1497e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch} 1498e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 1499df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setInspectorResourcesDataSizeLimits(int maximumResourcesContentSize, int maximumSingleResourceContentSize, ExceptionState& es) 15005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 15015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page* page = contextDocument()->frame()->page(); 15025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!page || !page->inspectorController()) { 1503df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 15045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 15055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) page->inspectorController()->setResourcesDataSizeLimitsFromInternals(maximumResourcesContentSize, maximumSingleResourceContentSize); 15075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 15085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1509df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::hasGrammarMarker(Document* document, int from, int length, ExceptionState&) 15105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 15115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) 15125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 15135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return document->frame()->editor()->selectionStartHasMarkerFor(DocumentMarker::Grammar, from, length); 15155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 15165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1517df95704c49daea886ddad70775bda23618d6274dBen Murdochunsigned Internals::numberOfScrollableAreas(Document* document, ExceptionState&) 15185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 15195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned count = 0; 15205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Frame* frame = document->frame(); 15215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (frame->view()->scrollableAreas()) 15225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) count += frame->view()->scrollableAreas()->size(); 15235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) { 15255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (child->view() && child->view()->scrollableAreas()) 15265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) count += child->view()->scrollableAreas()->size(); 15275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return count; 15305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 153153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1532df95704c49daea886ddad70775bda23618d6274dBen Murdochbool Internals::isPageBoxVisible(Document* document, int pageNumber, ExceptionState& es) 15335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 15345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) { 1535df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 15365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 15375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return document->isPageBoxVisible(pageNumber); 15405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 15415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1542df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::layerTreeAsText(Document* document, ExceptionState& es) const 15435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1544df95704c49daea886ddad70775bda23618d6274dBen Murdoch return layerTreeAsText(document, 0, es); 15455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 15465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1547df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::elementLayerTreeAsText(Element* element, ExceptionState& es) const 1548521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles){ 1549df95704c49daea886ddad70775bda23618d6274dBen Murdoch return elementLayerTreeAsText(element, 0, es); 1550521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)} 1551521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1552df95704c49daea886ddad70775bda23618d6274dBen Murdochstatic PassRefPtr<NodeList> paintOrderList(Element* element, ExceptionState& es, RenderLayer::PaintOrderListType type) 155353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 155453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!element) { 1555df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 155653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 0; 155753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 155853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 155953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) element->document()->updateLayout(); 156053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 156153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) RenderObject* renderer = element->renderer(); 156253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!renderer || !renderer->isBox()) { 1563df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 156453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 0; 156553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 156653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 156753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) RenderLayer* layer = toRenderBox(renderer)->layer(); 156853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!layer) { 1569df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 157053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 0; 157153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 157253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 157353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) Vector<RefPtr<Node> > nodes; 157453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) layer->computePaintOrderList(type, nodes); 157553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return StaticNodeList::adopt(nodes); 157653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 157753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1578df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<NodeList> Internals::paintOrderListBeforePromote(Element* element, ExceptionState& es) 157953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 1580df95704c49daea886ddad70775bda23618d6274dBen Murdoch return paintOrderList(element, es, RenderLayer::BeforePromote); 158153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 158253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1583df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<NodeList> Internals::paintOrderListAfterPromote(Element* element, ExceptionState& es) 158453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 1585df95704c49daea886ddad70775bda23618d6274dBen Murdoch return paintOrderList(element, es, RenderLayer::AfterPromote); 158653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 158753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1588df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::layerTreeAsText(Document* document, unsigned flags, ExceptionState& es) const 15895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 15905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) { 1591df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 15925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 15935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1595521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return document->frame()->layerTreeAsText(flags); 1596521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)} 1597521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1598df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::elementLayerTreeAsText(Element* element, unsigned flags, ExceptionState& es) const 1599521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles){ 1600521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!element) { 1601df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1602521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return String(); 1603521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 1604521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1605521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) element->document()->updateLayout(); 1606521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1607521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) RenderObject* renderer = element->renderer(); 1608521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!renderer || !renderer->isBox()) { 1609df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1610521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return String(); 1611521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 1612521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 1613521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) RenderLayer* layer = toRenderBox(renderer)->layer(); 161483750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch if (!layer 161583750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch || !layer->backing() 161683750176c3ee2cea66c8a9751271026a5901be3aBen Murdoch || !layer->backing()->graphicsLayer()) { 1617521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) // Don't raise exception in these cases which may be normally used in tests. 1618521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return String(); 1619521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) } 16205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1621521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return layer->backing()->graphicsLayer()->layerTreeAsText(flags); 16225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 16235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1624df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setNeedsCompositedScrolling(Element* element, unsigned needsCompositedScrolling, ExceptionState& es) 16255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles){ 16265267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!element) { 1627df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 16285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 16295267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) } 16305267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 16315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) element->document()->updateLayout(); 16325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 16335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) RenderObject* renderer = element->renderer(); 16345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!renderer || !renderer->isBox()) { 1635df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 16365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 16375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) } 16385267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 16395267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) RenderLayer* layer = toRenderBox(renderer)->layer(); 16405267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (!layer) { 1641df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 16425267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 16435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) } 16445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 16455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) layer->setForceNeedsCompositedScrolling(static_cast<RenderLayer::ForceNeedsCompositedScrollingMode>(needsCompositedScrolling)); 16465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)} 16475267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1648df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::repaintRectsAsText(Document* document, ExceptionState& es) const 16495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 16505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->frame()) { 1651df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 16525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 16535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return document->frame()->trackedRepaintRectsAsText(); 16565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 16575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1658df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::scrollingStateTreeAsText(Document* document, ExceptionState& es) const 16595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 166053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return String(); 16615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 16625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1663df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::mainThreadScrollingReasons(Document* document, ExceptionState& es) const 1664926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1665926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->frame()) { 1666df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1667926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return String(); 1668926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1669926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1670926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Page* page = document->page(); 1671926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!page) 1672926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return String(); 1673926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1674926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return page->mainThreadScrollingReasonsAsText(); 1675926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1676926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1677df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<ClientRectList> Internals::nonFastScrollableRects(Document* document, ExceptionState& es) const 1678926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1679926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->frame()) { 1680df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1681926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 1682926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1683926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1684926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Page* page = document->page(); 1685926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!page) 1686926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 0; 1687926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1688926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return page->nonFastScrollableRects(document->frame()); 1689926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1690926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1691df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::garbageCollectDocumentResources(Document* document, ExceptionState& es) const 16925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 16935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) { 1694df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 16955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 16965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16983464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch ResourceFetcher* fetcher = document->fetcher(); 16993464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch if (!fetcher) 17005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 17013464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch fetcher->garbageCollectDocumentResources(); 17025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1704fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdochvoid Internals::evictAllResources() const 17050019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch{ 17060019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch memoryCache()->evictResources(); 17070019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch} 17080019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch 17095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::allowRoundingHacks() const 17105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1711926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) TextRun::setAllowsRoundingHacks(true); 1712926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1713926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1714926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void Internals::insertAuthorCSS(Document* document, const String& css) const 1715926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1716926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) RefPtr<StyleSheetContents> parsedSheet = StyleSheetContents::create(document); 1717926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parsedSheet->setIsUserStyleSheet(false); 1718926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parsedSheet->parseString(css); 1719926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) document->styleSheetCollection()->addAuthorSheet(parsedSheet); 1720926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1721926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1722926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void Internals::insertUserCSS(Document* document, const String& css) const 1723926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1724926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) RefPtr<StyleSheetContents> parsedSheet = StyleSheetContents::create(document); 1725926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parsedSheet->setIsUserStyleSheet(true); 1726926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parsedSheet->parseString(css); 1727926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) document->styleSheetCollection()->addUserSheet(parsedSheet); 17285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)String Internals::counterValue(Element* element) 17315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 17325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) 17335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 17345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return counterValueForElement(element); 17365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int Internals::pageNumber(Element* element, float pageWidth, float pageHeight) 17395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 17405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element) 17415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 17425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return PrintContext::pageNumberForElement(element, FloatSize(pageWidth, pageHeight)); 17445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1746926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)Vector<String> Internals::iconURLs(Document* document, int iconTypesMask) const 17475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1748926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Vector<IconURL> iconURLs = document->iconURLs(iconTypesMask); 1749926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Vector<String> array; 17505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Vector<IconURL>::const_iterator iter(iconURLs.begin()); 17525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (; iter != iconURLs.end(); ++iter) 1753926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) array.append(iter->m_iconURL.string()); 17545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1755926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return array; 1756926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1757926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1758926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)Vector<String> Internals::shortcutIconURLs(Document* document) const 1759926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1760926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return iconURLs(document, Favicon); 1761926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1762926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1763926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)Vector<String> Internals::allIconURLs(Document* document) const 1764926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1765926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return iconURLs(document, Favicon | TouchIcon | TouchPrecomposedIcon); 17665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int Internals::numberOfPages(float pageWidth, float pageHeight) 17695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 17705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!frame()) 17715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 17725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return PrintContext::numberOfPages(frame(), FloatSize(pageWidth, pageHeight)); 17745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1776df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::pageProperty(String propertyName, int pageNumber, ExceptionState& es) const 17775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 17785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!frame()) { 1779df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 17805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 17815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return PrintContext::pageProperty(frame(), propertyName.utf8().data(), pageNumber); 17845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1786df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::pageSizeAndMarginsInPixels(int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft, ExceptionState& es) const 17875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 17885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!frame()) { 1789df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 17905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return String(); 17915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return PrintContext::pageSizeAndMarginsInPixels(frame(), pageNumber, width, height, marginTop, marginRight, marginBottom, marginLeft); 17945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1796df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setDeviceScaleFactor(float scaleFactor, ExceptionState& es) 1797e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles){ 1798e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) Document* document = contextDocument(); 1799e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) if (!document || !document->page()) { 1800df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1801e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) return; 1802e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) } 1803e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) Page* page = document->page(); 1804e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) page->setDeviceScaleFactor(scaleFactor); 1805e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)} 1806e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) 1807df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::setIsCursorVisible(Document* document, bool isVisible, ExceptionState& es) 180853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 180953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!document || !document->page()) { 1810df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 181153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 181253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 181353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) document->page()->setIsCursorVisible(isVisible); 181453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 181553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 18165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::webkitWillEnterFullScreenForElement(Document* document, Element* element) 18175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) 18195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1820f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) FullscreenElementStack::from(document)->webkitWillEnterFullScreenForElement(element); 18215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::webkitDidEnterFullScreenForElement(Document* document, Element* element) 18245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) 18265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1827f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) FullscreenElementStack::from(document)->webkitDidEnterFullScreenForElement(element); 18285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::webkitWillExitFullScreenForElement(Document* document, Element* element) 18315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) 18335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1834f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) FullscreenElementStack::from(document)->webkitWillExitFullScreenForElement(element); 18355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::webkitDidExitFullScreenForElement(Document* document, Element* element) 18385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document) 18405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1841f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) FullscreenElementStack::from(document)->webkitDidExitFullScreenForElement(element); 18425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::registerURLSchemeAsBypassingContentSecurityPolicy(const String& scheme) 18455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy(scheme); 18475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Internals::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy(const String& scheme) 18505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SchemeRegistry::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy(scheme); 18525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)PassRefPtr<MallocStatistics> Internals::mallocStatistics() const 18555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return MallocStatistics::create(); 18575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1859926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)PassRefPtr<TypeConversions> Internals::typeConversions() const 1860926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1861926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return TypeConversions::create(); 1862926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1863926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1864926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)Vector<String> Internals::getReferencedFilePaths() const 18655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frame()->loader()->history()->saveDocumentAndScrollState(); 1867926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return FormController::getReferencedFilePaths(frame()->loader()->history()->currentItem()->documentState()); 18685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1870df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::startTrackingRepaints(Document* document, ExceptionState& es) 18715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->view()) { 1873df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 18745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 18755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FrameView* frameView = document->view(); 18785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->setTracksRepaints(true); 18795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1881df95704c49daea886ddad70775bda23618d6274dBen Murdochvoid Internals::stopTrackingRepaints(Document* document, ExceptionState& es) 18825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 18835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!document || !document->view()) { 1884df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 18855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 18865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FrameView* frameView = document->view(); 18895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameView->setTracksRepaints(false); 18905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 18915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1892926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static const char* cursorTypeToString(Cursor::Type cursorType) 1893926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1894926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) switch (cursorType) { 1895926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Pointer: return "Pointer"; 1896926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Cross: return "Cross"; 1897926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Hand: return "Hand"; 1898926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::IBeam: return "IBeam"; 1899926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Wait: return "Wait"; 1900926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Help: return "Help"; 1901926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::EastResize: return "EastResize"; 1902926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthResize: return "NorthResize"; 1903926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthEastResize: return "NorthEastResize"; 1904926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthWestResize: return "NorthWestResize"; 1905926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::SouthResize: return "SouthResize"; 1906926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::SouthEastResize: return "SouthEastResize"; 1907926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::SouthWestResize: return "SouthWestResize"; 1908926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::WestResize: return "WestResize"; 1909926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthSouthResize: return "NorthSouthResize"; 1910926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::EastWestResize: return "EastWestResize"; 1911926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthEastSouthWestResize: return "NorthEastSouthWestResize"; 1912926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthWestSouthEastResize: return "NorthWestSouthEastResize"; 1913926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::ColumnResize: return "ColumnResize"; 1914926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::RowResize: return "RowResize"; 1915926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::MiddlePanning: return "MiddlePanning"; 1916926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::EastPanning: return "EastPanning"; 1917926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthPanning: return "NorthPanning"; 1918926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthEastPanning: return "NorthEastPanning"; 1919926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NorthWestPanning: return "NorthWestPanning"; 1920926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::SouthPanning: return "SouthPanning"; 1921926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::SouthEastPanning: return "SouthEastPanning"; 1922926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::SouthWestPanning: return "SouthWestPanning"; 1923926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::WestPanning: return "WestPanning"; 1924926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Move: return "Move"; 1925926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::VerticalText: return "VerticalText"; 1926926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Cell: return "Cell"; 1927926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::ContextMenu: return "ContextMenu"; 1928926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Alias: return "Alias"; 1929926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Progress: return "Progress"; 1930926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NoDrop: return "NoDrop"; 1931926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Copy: return "Copy"; 1932926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::None: return "None"; 1933926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::NotAllowed: return "NotAllowed"; 1934926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::ZoomIn: return "ZoomIn"; 1935926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::ZoomOut: return "ZoomOut"; 1936926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Grab: return "Grab"; 1937926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Grabbing: return "Grabbing"; 1938926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) case Cursor::Custom: return "Custom"; 1939926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1940926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1941926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ASSERT_NOT_REACHED(); 1942926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return "UNKNOWN"; 1943926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1944926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1945df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::getCurrentCursorInfo(Document* document, ExceptionState& es) 1946926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1947926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!document || !document->frame()) { 1948df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 1949926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return String(); 1950926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1951926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1952926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Cursor cursor = document->frame()->eventHandler()->currentMouseCursor(); 1953926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1954926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) StringBuilder result; 1955926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append("type="); 1956926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append(cursorTypeToString(cursor.type())); 1957926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append(" hotSpot="); 1958926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.appendNumber(cursor.hotSpot().x()); 1959926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append(","); 1960926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.appendNumber(cursor.hotSpot().y()); 1961926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (cursor.image()) { 1962926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) IntSize size = cursor.image()->size(); 1963926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append(" image="); 1964926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.appendNumber(size.width()); 1965926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append("x"); 1966926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.appendNumber(size.height()); 1967926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1968926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (cursor.imageScaleFactor() != 1) { 1969926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append(" scale="); 1970926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) NumberToStringBuffer buffer; 1971926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result.append(numberToFixedPrecisionString(cursor.imageScaleFactor(), 8, buffer, true)); 1972926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 197353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1974926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return result.toString(); 1975926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1976926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1977926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)PassRefPtr<ArrayBuffer> Internals::serializeObject(PassRefPtr<SerializedScriptValue> value) const 1978926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1979926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) String stringValue = value->toWireString(); 1980591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch RefPtr<ArrayBuffer> buffer = ArrayBuffer::createUninitialized(stringValue.length(), sizeof(UChar)); 1981e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch stringValue.copyTo(static_cast<UChar*>(buffer->data()), 0, stringValue.length()); 1982591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return buffer.release(); 1983926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1984926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1985926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)PassRefPtr<SerializedScriptValue> Internals::deserializeBuffer(PassRefPtr<ArrayBuffer> buffer) const 1986926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1987926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) String value(static_cast<const UChar*>(buffer->data()), buffer->byteLength() / sizeof(UChar)); 1988926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return SerializedScriptValue::createFromWire(value); 1989926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1990926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1991926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void Internals::setUsesOverlayScrollbars(bool enabled) 1992926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1993926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebCore::Settings::setUsesOverlayScrollbars(enabled); 1994926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1995926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1996926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)void Internals::forceReload(bool endToEnd) 1997926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 19987757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch frame()->loader()->reload(endToEnd ? EndToEndReload : NormalReload); 1999926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 2000926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2001df95704c49daea886ddad70775bda23618d6274dBen MurdochPassRefPtr<ClientRect> Internals::selectionBounds(ExceptionState& es) 2002591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch{ 2003591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch Document* document = contextDocument(); 2004591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!document || !document->frame() || !document->frame()->selection()) { 2005df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 2006591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return 0; 2007591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 2008591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 2009591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return ClientRect::create(document->frame()->selection()->bounds()); 2010591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch} 2011591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 2012df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::markerTextForListItem(Element* element, ExceptionState& es) 2013926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 2014926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!element) { 2015df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 2016926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return String(); 2017926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 2018926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return WebCore::markerTextForListItem(element); 2019926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 2020926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2021df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::getImageSourceURL(Element* element, ExceptionState& es) 2022926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 2023926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!element) { 2024df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 2025926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return String(); 2026926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 2027926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return element->imageSourceURL(); 2028926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 2029926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2030df95704c49daea886ddad70775bda23618d6274dBen MurdochString Internals::baseURL(Document* document, ExceptionState& es) 2031591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch{ 2032591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!document) { 2033df95704c49daea886ddad70775bda23618d6274dBen Murdoch es.throwDOMException(InvalidAccessError); 2034591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return String(); 2035591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 2036591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 2037591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return document->baseURL().string(); 2038591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch} 2039591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 204053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)bool Internals::isSelectPopupVisible(Node* node) 2041926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 20420019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch if (!node->hasTagName(HTMLNames::selectTag)) 204353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return false; 204453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 204553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) HTMLSelectElement* select = toHTMLSelectElement(node); 204653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 204753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) RenderObject* renderer = select->renderer(); 204853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!renderer->isMenuList()) 204953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return false; 205053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 205153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) RenderMenuList* menuList = toRenderMenuList(renderer); 205253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return menuList->popupIsVisible(); 2053926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 2054926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2055fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdochbool Internals::loseSharedGraphicsContext3D() 2056fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch{ 2057fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch RefPtr<GraphicsContext3D> sharedContext = SharedGraphicsContext3D::get(); 2058fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch if (!sharedContext) 2059fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch return false; 2060fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch sharedContext->getExtensions()->loseContextCHROMIUM(Extensions3D::GUILTY_CONTEXT_RESET_ARB, Extensions3D::INNOCENT_CONTEXT_RESET_ARB); 2061fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch // To prevent tests that call loseSharedGraphicsContext3D from being 2062fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch // flaky, we call finish so that the context is guaranteed to be lost 2063fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch // synchronously (i.e. before returning). 2064fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch sharedContext->finish(); 2065fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch return true; 2066fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch} 2067fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch 20685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2069