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