18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * from this software without specific prior written permission. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebInspector.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebKitDLL.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebView.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#pragma warning(push, 0) 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/InspectorController.h> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <WebCore/Page.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#pragma warning(pop) 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Assertions.h> 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebCore; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector* WebInspector::createInstance(WebView* webView) 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebInspector* inspector = new WebInspector(webView); 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project inspector->AddRef(); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return inspector; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector::WebInspector(WebView* webView) 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_refCount(0) 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_webView(webView) 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ASSERT_ARG(webView, webView); 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount++; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.add("WebInspector"); 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector::~WebInspector() 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassCount--; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gClassNameCount.remove("WebInspector"); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid WebInspector::webViewClosed() 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_webView = 0; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::QueryInterface(REFIID riid, void** ppvObject) 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = 0; 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (IsEqualGUID(riid, IID_IWebInspector)) 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<IWebInspector*>(this); 75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block else if (IsEqualGUID(riid, IID_IWebInspectorPrivate)) 76231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *ppvObject = static_cast<IWebInspectorPrivate*>(this); 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (IsEqualGUID(riid, IID_IUnknown)) 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *ppvObject = static_cast<IWebInspector*>(this); 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_NOINTERFACE; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRef(); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebInspector::AddRef(void) 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ++m_refCount; 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectULONG STDMETHODCALLTYPE WebInspector::Release(void) 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ULONG newRef = --m_refCount; 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!newRef) 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete this; 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return newRef; 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::show() 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_webView) 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Page* page = m_webView->page()) 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->inspectorController()->show(); 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::showConsole() 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_webView) 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Page* page = m_webView->page()) 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->inspectorController()->showPanel(InspectorController::ConsolePanel); 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::unused1() 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::close() 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_webView) 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Page* page = m_webView->page()) 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->inspectorController()->close(); 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::attach() 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_webView) 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Page* page = m_webView->page()) 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->inspectorController()->attachWindow(); 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::detach() 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_webView) 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Page* page = m_webView->page()) 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->inspectorController()->detachWindow(); 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::isDebuggingJavaScript(BOOL* isDebugging) 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!isDebugging) 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *isDebugging = FALSE; 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_webView) 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* page = m_webView->page(); 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!page) 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *isDebugging = page->inspectorController()->debuggerEnabled(); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::toggleDebuggingJavaScript() 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_webView) 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* page = m_webView->page(); 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!page) 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project InspectorController* inspector = page->inspectorController(); 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (inspector->debuggerEnabled()) 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project inspector->disableDebugger(); 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else { 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project inspector->showPanel(InspectorController::ScriptsPanel); 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project inspector->enableDebugger(); 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::isProfilingJavaScript(BOOL* isProfiling) 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!isProfiling) 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *isProfiling = FALSE; 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_webView) 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* page = m_webView->page(); 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!page) 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *isProfiling = page->inspectorController()->isRecordingUserInitiatedProfile(); 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::toggleProfilingJavaScript() 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_webView) 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* page = m_webView->page(); 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!page) 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project InspectorController* inspector = page->inspectorController(); 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (inspector->isRecordingUserInitiatedProfile()) { 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project inspector->stopUserInitiatedProfiling(); 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project inspector->showPanel(InspectorController::ProfilesPanel); 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project inspector->startUserInitiatedProfiling(); 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::isJavaScriptProfilingEnabled(BOOL* isProfilingEnabled) 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!isProfilingEnabled) 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return E_POINTER; 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *isProfilingEnabled = FALSE; 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_webView) 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* page = m_webView->page(); 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!page) 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *isProfilingEnabled = page->inspectorController()->profilerEnabled(); 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectHRESULT STDMETHODCALLTYPE WebInspector::setJavaScriptProfilingEnabled(BOOL enabled) 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!m_webView) 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Page* page = m_webView->page(); 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!page) 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (enabled) 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->inspectorController()->enableProfiler(); 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project page->inspectorController()->disableProfiler(); 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return S_OK; 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 261231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 262231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockHRESULT STDMETHODCALLTYPE WebInspector::evaluateInFrontend(ULONG callId, BSTR bScript) 263231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 264231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!m_webView) 265231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return S_OK; 266231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 267231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block Page* page = m_webView->page(); 268231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!page) 269231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return S_OK; 270231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 271231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block String script(bScript, SysStringLen(bScript)); 272231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block page->inspectorController()->evaluateForTestInFrontend(callId, script); 273231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return S_OK; 274231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 275643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 276643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockHRESULT STDMETHODCALLTYPE WebInspector::isTimelineProfilingEnabled(BOOL* isEnabled) 277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 278643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!isEnabled) 279643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return E_POINTER; 280643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 281643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *isEnabled = FALSE; 282643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 283643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_webView) 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return S_OK; 285643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block Page* page = m_webView->page(); 287643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!page) 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return S_OK; 289643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 290643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *isEnabled = page->inspectorController()->timelineAgent() != 0; 291643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return S_OK; 292643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 294643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockHRESULT STDMETHODCALLTYPE WebInspector::setTimelineProfilingEnabled(BOOL enabled) 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_webView) 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return S_OK; 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block Page* page = m_webView->page(); 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!page) 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return S_OK; 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (enabled) 304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block page->inspectorController()->startTimelineProfiler(); 305643ca7872b450ea4efacab6188849e5aac2ba161Steve Block else 306643ca7872b450ea4efacab6188849e5aac2ba161Steve Block page->inspectorController()->stopTimelineProfiler(); 307643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 308643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return S_OK; 309643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 310