Chrome.cpp revision 65f03d4f644ce73618e5f4f50dd694b26f55ae12
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved. 3db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Chrome.h" 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ChromeClient.h" 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "DNS.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Document.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FileList.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FloatRect.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Frame.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FrameTree.h" 318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "Geolocation.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLFormElement.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLInputElement.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLNames.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HitTestResult.h" 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InspectorInstrumentation.h" 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Page.h" 385f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "PageGroupLoadDeferrer.h" 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "RenderObject.h" 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ResourceHandle.h" 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ScriptController.h" 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SecurityOrigin.h" 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Settings.h" 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WindowFeatures.h" 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/PassRefPtr.h> 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefPtr.h> 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Vector.h> 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DOM_STORAGE) 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "StorageNamespace.h" 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace HTMLNames; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace std; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectChrome::Chrome(Page* page, ChromeClient* client) 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_page(page) 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_client(client) 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT(m_client); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectChrome::~Chrome() 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->chromeDestroyed(); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid Chrome::invalidateWindow(const IntRect& updateRect, bool immediate) 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_client->invalidateWindow(updateRect, immediate); 73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid Chrome::invalidateContentsAndWindow(const IntRect& updateRect, bool immediate) 76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_client->invalidateContentsAndWindow(updateRect, immediate); 78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid Chrome::invalidateContentsForSlowScroll(const IntRect& updateRect, bool immediate) 81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_client->invalidateContentsForSlowScroll(updateRect, immediate); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::scroll(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect) 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->scroll(scrollDelta, rectToScroll, clipRect); 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(TILED_BACKING_STORE) 9128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid Chrome::delegatedScrollRequested(const IntSize& scrollDelta) 9228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 9328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu m_client->delegatedScrollRequested(scrollDelta); 9428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 9528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif 9628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectIntPoint Chrome::screenToWindow(const IntPoint& point) const 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->screenToWindow(point); 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectIntRect Chrome::windowToScreen(const IntRect& rect) const 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->windowToScreen(rect); 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockPlatformPageClient Chrome::platformPageClient() const 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 109231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return m_client->platformPageClient(); 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 112635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectvoid Chrome::contentsSizeChanged(Frame* frame, const IntSize& size) const 113635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 114635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project m_client->contentsSizeChanged(frame, size); 115635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 116635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 11721939df44de1705786c545cd1bf519d47250322dBen Murdochvoid Chrome::scrollRectIntoView(const IntRect& rect) const 118635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 11921939df44de1705786c545cd1bf519d47250322dBen Murdoch // FIXME: The unused ScrollView* argument can and should be removed from ChromeClient::scrollRectIntoView. 12021939df44de1705786c545cd1bf519d47250322dBen Murdoch m_client->scrollRectIntoView(rect, 0); 121635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 122635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 123231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockvoid Chrome::scrollbarsModeDidChange() const 124231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 125231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_client->scrollbarsModeDidChange(); 126231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 127231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setWindowRect(const FloatRect& rect) const 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->setWindowRect(rect); 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFloatRect Chrome::windowRect() const 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->windowRect(); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFloatRect Chrome::pageRect() const 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->pageRect(); 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfloat Chrome::scaleFactor() 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->scaleFactor(); 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::focus() const 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->focus(); 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::unfocus() const 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->unfocus(); 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::canTakeFocus(FocusDirection direction) const 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->canTakeFocus(direction); 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::takeFocus(FocusDirection direction) const 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->takeFocus(direction); 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid Chrome::focusedNodeChanged(Node* node) const 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_client->focusedNodeChanged(node); 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 17328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid Chrome::focusedFrameChanged(Frame* frame) const 17428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 17528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu m_client->focusedFrameChanged(frame); 17628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 17728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 178e14391e94c850b8bd03680c23b38978db68687a8John ReckPage* Chrome::createWindow(Frame* frame, const FrameLoadRequest& request, const WindowFeatures& features, const NavigationAction& action) const 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 180e14391e94c850b8bd03680c23b38978db68687a8John Reck Page* newPage = m_client->createWindow(frame, request, features, action); 1815f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DOM_STORAGE) 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (newPage) { 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (StorageNamespace* oldSessionStorage = m_page->sessionStorage(false)) 1850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch newPage->setSessionStorage(oldSessionStorage->copy()); 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1885f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return newPage; 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::show() const 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->show(); 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::canRunModal() const 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->canRunModal(); 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::canRunModalNow() const 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // If loads are blocked, we can't run modal because the contents 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // of the modal dialog will never show up! 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return canRunModal() && !ResourceHandle::loadsBlocked(); 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::runModal() const 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Defer callbacks in all the other pages in this group, so we don't try to run JavaScript 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // in a way that could interact with this view. 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PageGroupLoadDeferrer deferrer(m_page, false); 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project TimerBase::fireTimersInNestedEventLoop(); 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->runModal(); 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setToolbarsVisible(bool b) const 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->setToolbarsVisible(b); 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::toolbarsVisible() const 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->toolbarsVisible(); 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setStatusbarVisible(bool b) const 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->setStatusbarVisible(b); 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::statusbarVisible() const 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->statusbarVisible(); 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setScrollbarsVisible(bool b) const 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->setScrollbarsVisible(b); 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::scrollbarsVisible() const 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->scrollbarsVisible(); 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setMenubarVisible(bool b) const 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->setMenubarVisible(b); 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::menubarVisible() const 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->menubarVisible(); 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setResizable(bool b) const 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->setResizable(b); 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::canRunBeforeUnloadConfirmPanel() 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->canRunBeforeUnloadConfirmPanel(); 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::runBeforeUnloadConfirmPanel(const String& message, Frame* frame) 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Defer loads in case the client method runs a new event loop that would 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // otherwise cause the load to continue while we're in the middle of executing JavaScript. 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PageGroupLoadDeferrer deferrer(m_page, true); 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->runBeforeUnloadConfirmPanel(message, frame); 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::closeWindowSoon() 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->closeWindowSoon(); 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::runJavaScriptAlert(Frame* frame, const String& message) 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Defer loads in case the client method runs a new event loop that would 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // otherwise cause the load to continue while we're in the middle of executing JavaScript. 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PageGroupLoadDeferrer deferrer(m_page, true); 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT(frame); 290635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project m_client->runJavaScriptAlert(frame, frame->displayStringModifiedByEncoding(message)); 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::runJavaScriptConfirm(Frame* frame, const String& message) 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Defer loads in case the client method runs a new event loop that would 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // otherwise cause the load to continue while we're in the middle of executing JavaScript. 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PageGroupLoadDeferrer deferrer(m_page, true); 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT(frame); 300635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return m_client->runJavaScriptConfirm(frame, frame->displayStringModifiedByEncoding(message)); 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::runJavaScriptPrompt(Frame* frame, const String& prompt, const String& defaultValue, String& result) 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Defer loads in case the client method runs a new event loop that would 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // otherwise cause the load to continue while we're in the middle of executing JavaScript. 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PageGroupLoadDeferrer deferrer(m_page, true); 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT(frame); 310635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project bool ok = m_client->runJavaScriptPrompt(frame, frame->displayStringModifiedByEncoding(prompt), frame->displayStringModifiedByEncoding(defaultValue), result); 3110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (ok) 313635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project result = frame->displayStringModifiedByEncoding(result); 3140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ok; 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setStatusbarText(Frame* frame, const String& status) 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT(frame); 321635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project m_client->setStatusbarText(frame->displayStringModifiedByEncoding(status)); 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool Chrome::shouldInterruptJavaScript() 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // Defer loads in case the client method runs a new event loop that would 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // otherwise cause the load to continue while we're in the middle of executing JavaScript. 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PageGroupLoadDeferrer deferrer(m_page, true); 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->shouldInterruptJavaScript(); 3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectIntRect Chrome::windowResizerRect() const 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_client->windowResizerRect(); 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::mouseDidMoveOverElement(const HitTestResult& result, unsigned modifierFlags) 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (result.innerNode()) { 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Document* document = result.innerNode()->document(); 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (document && document->isDNSPrefetchEnabled()) 343dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ResourceHandle::prepareForURL(result.absoluteLinkURL()); 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->mouseDidMoveOverElement(result, modifierFlags); 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 34765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch InspectorInstrumentation::mouseDidMoveOverElement(m_page, result, modifierFlags); 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::setToolTip(const HitTestResult& result) 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // First priority is a potential toolTip representing a spelling or grammar error 3530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch TextDirection toolTipDirection; 3540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch String toolTip = result.spellingToolTip(toolTipDirection); 3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Next priority is a toolTip from a URL beneath the mouse (if preference is set to show those). 3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (toolTip.isEmpty() && m_page->settings()->showsURLsInToolTips()) { 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Node* node = result.innerNonSharedNode()) { 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Get tooltip representing form action, if relevant 3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (node->hasTagName(inputTag)) { 3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 36268513a70bcd92384395513322f1b801e7bf9c729Steve Block if (input->isSubmitButton()) 3630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (HTMLFormElement* form = input->form()) { 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project toolTip = form->action(); 3650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (form->renderer()) 3660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toolTipDirection = form->renderer()->style()->direction(); 3670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch else 3680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toolTipDirection = LTR; 3690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Get tooltip representing link's URL 3740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (toolTip.isEmpty()) { 3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME: Need to pass this URL through userVisibleString once that's in WebCore 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project toolTip = result.absoluteLinkURL().string(); 3770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // URL always display as LTR. 3780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toolTipDirection = LTR; 3790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Next we'll consider a tooltip for element with "title" attribute 3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (toolTip.isEmpty()) 3840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toolTip = result.title(toolTipDirection); 3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Lastly, for <input type="file"> that allow multiple files, we'll consider a tooltip for the selected filenames 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (toolTip.isEmpty()) { 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Node* node = result.innerNonSharedNode()) { 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (node->hasTagName(inputTag)) { 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 39168513a70bcd92384395513322f1b801e7bf9c729Steve Block if (input->isFileUpload()) { 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FileList* files = input->files(); 3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned listSize = files->length(); 3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (files && listSize > 1) { 3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Vector<UChar> names; 3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (size_t i = 0; i < listSize; ++i) { 3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project append(names, files->item(i)->fileName()); 3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (i != listSize - 1) 3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project names.append('\n'); 4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project toolTip = String::adopt(names); 4020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // filename always display as LTR. 4030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch toolTipDirection = LTR; 4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_client->setToolTip(toolTip, toolTipDirection); 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::print(Frame* frame) 4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->print(frame); 4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4188f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianvoid Chrome::requestGeolocationPermissionForFrame(Frame* frame, Geolocation* geolocation) 4198f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian{ 4208f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian m_client->requestGeolocationPermissionForFrame(frame, geolocation); 4218f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian} 4228f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 423dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid Chrome::cancelGeolocationPermissionRequestForFrame(Frame* frame, Geolocation* geolocation) 424dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 425dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_client->cancelGeolocationPermissionRequestForFrame(frame, geolocation); 426234ad679c5705a581292e45349c33513bbaa526aSteve Block} 427234ad679c5705a581292e45349c33513bbaa526aSteve Block 4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid Chrome::runOpenPanel(Frame* frame, PassRefPtr<FileChooser> fileChooser) 4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_client->runOpenPanel(frame, fileChooser); 4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 433dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid Chrome::chooseIconForFiles(const Vector<String>& filenames, FileChooser* fileChooser) 434692e5dbf12901edacf14812a6fae25462920af42Steve Block{ 435dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block m_client->chooseIconForFiles(filenames, fileChooser); 436692e5dbf12901edacf14812a6fae25462920af42Steve Block} 437692e5dbf12901edacf14812a6fae25462920af42Steve Block 438a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid Chrome::dispatchViewportDataDidChange(const ViewportArguments& arguments) const 439a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 440a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_client->dispatchViewportDataDidChange(arguments); 441a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 442a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 443967717af5423377c967781471ee106e2bb4e11c8Ben Murdochvoid Chrome::setCursor(const Cursor& cursor) 4445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 445967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch m_client->setCursor(cursor); 4465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 4475f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 448231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(NOTIFICATIONS) 449231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockNotificationPresenter* Chrome::notificationPresenter() const 450231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 451231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return m_client->notificationPresenter(); 452231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 453231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 454231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// -------- 4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DASHBOARD_SUPPORT) 4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ChromeClient::dashboardRegionsChanged() 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ChromeClient::populateVisitedLinks() 4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFloatRect ChromeClient::customHighlightRect(Node*, const AtomicString&, const FloatRect&) 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return FloatRect(); 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid ChromeClient::paintCustomHighlight(Node*, const AtomicString&, const FloatRect&, const FloatRect&, bool, bool) 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool ChromeClient::shouldReplaceWithGeneratedFileForUpload(const String&, String&) 4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectString ChromeClient::generateReplacementFile(const String&) 4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_NOT_REACHED(); 4840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return String(); 4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochbool ChromeClient::paintCustomScrollbar(GraphicsContext*, const FloatRect&, ScrollbarControlSize, 488635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project ScrollbarControlState, ScrollbarPart, bool, 489635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project float, float, ScrollbarControlPartMask) 4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool ChromeClient::paintCustomScrollCorner(GraphicsContext*, const FloatRect&) 4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 499db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockbool Chrome::selectItemWritingDirectionIsNatural() 500db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 501db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block return m_client->selectItemWritingDirectionIsNatural(); 502db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 503db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 504db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockPassRefPtr<PopupMenu> Chrome::createPopupMenu(PopupMenuClient* client) const 505db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 506db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block return m_client->createPopupMenu(client); 507db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 508db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 509db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockPassRefPtr<SearchPopupMenu> Chrome::createSearchPopupMenu(PopupMenuClient* client) const 510db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{ 511db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block return m_client->createSearchPopupMenu(client); 512db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block} 5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 51428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(CONTEXT_MENUS) 51528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuvoid Chrome::showContextMenu() 51628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{ 51728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu m_client->showContextMenu(); 51828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu} 51928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif 52028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 521f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochbool Chrome::requiresFullscreenForVideoPlayback() 522f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 523f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return m_client->requiresFullscreenForVideoPlayback(); 524f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 525f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 527