1 /* 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above 11 * copyright notice, this list of conditions and the following disclaimer 12 * in the documentation and/or other materials provided with the 13 * distribution. 14 * * Neither the name of Google Inc. nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 #include "config.h" 32 #include "InspectorRuntimeAgent.h" 33 34 #if ENABLE(INSPECTOR) 35 36 #include "InjectedScript.h" 37 #include "InjectedScriptManager.h" 38 #include "InspectorValues.h" 39 #include <wtf/PassRefPtr.h> 40 41 namespace WebCore { 42 43 InspectorRuntimeAgent::InspectorRuntimeAgent(InjectedScriptManager* injectedScriptManager) 44 : m_injectedScriptManager(injectedScriptManager) 45 { 46 } 47 48 InspectorRuntimeAgent::~InspectorRuntimeAgent() 49 { 50 } 51 52 void InspectorRuntimeAgent::evaluate(ErrorString* errorString, const String& expression, const String* const objectGroup, const bool* const includeCommandLineAPI, RefPtr<InspectorObject>* result) 53 { 54 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(getDefaultInspectedState()); 55 if (!injectedScript.hasNoValue()) 56 injectedScript.evaluate(errorString, expression, objectGroup ? *objectGroup : "", includeCommandLineAPI ? *includeCommandLineAPI : false, result); 57 } 58 59 void InspectorRuntimeAgent::evaluateOn(ErrorString* errorString, const String& objectId, const String& expression, RefPtr<InspectorObject>* result) 60 { 61 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); 62 if (!injectedScript.hasNoValue()) 63 injectedScript.evaluateOn(errorString, objectId, expression, result); 64 } 65 66 void InspectorRuntimeAgent::getProperties(ErrorString* errorString, const String& objectId, bool ignoreHasOwnProperty, RefPtr<InspectorArray>* result) 67 { 68 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); 69 if (!injectedScript.hasNoValue()) 70 injectedScript.getProperties(errorString, objectId, ignoreHasOwnProperty, result); 71 } 72 73 void InspectorRuntimeAgent::setPropertyValue(ErrorString* errorString, const String& objectId, const String& propertyName, const String& expression) 74 { 75 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); 76 if (!injectedScript.hasNoValue()) 77 injectedScript.setPropertyValue(errorString, objectId, propertyName, expression); 78 else 79 *errorString = "No injected script found"; 80 } 81 82 void InspectorRuntimeAgent::releaseObject(ErrorString*, const String& objectId) 83 { 84 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForObjectId(objectId); 85 if (!injectedScript.hasNoValue()) 86 injectedScript.releaseObject(objectId); 87 } 88 89 void InspectorRuntimeAgent::releaseObjectGroup(ErrorString*, const String& objectGroup) 90 { 91 m_injectedScriptManager->releaseObjectGroup(objectGroup); 92 } 93 94 } // namespace WebCore 95 96 #endif // ENABLE(INSPECTOR) 97