1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* 25f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2009 Google Inc. All rights reserved. 38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Redistribution and use in source and binary forms, with or without 5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modification, are permitted provided that the following conditions are 6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * met: 78f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions of source code must retain the above copyright 9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * notice, this list of conditions and the following disclaimer. 10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions in binary form must reproduce the above 11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * copyright notice, this list of conditions and the following disclaimer 12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in the documentation and/or other materials provided with the 13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * distribution. 14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Neither the name of Google Inc. nor the names of its 15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * contributors may be used to endorse or promote products derived from 16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * this software without specific prior written permission. 178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 315f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#ifndef ScriptFunctionCall_h 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#define ScriptFunctionCall_h 33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 345f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "PlatformString.h" 355f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "ScriptObject.h" 365f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 375f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include <wtf/Vector.h> 38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WebCore { 405f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class ScriptValue; 415f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class ScriptState; 425f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 43bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen class ScriptCallArgumentHandler { 445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian public: 45bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ScriptCallArgumentHandler(ScriptState* scriptState) : m_scriptState(scriptState) { } 465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 475f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void appendArgument(const ScriptObject&); 485f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void appendArgument(const ScriptValue&); 495f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void appendArgument(const String&); 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void appendArgument(const char*); 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void appendArgument(long); 525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void appendArgument(long long); 535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void appendArgument(unsigned int); 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void appendArgument(unsigned long); 555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void appendArgument(int); 565f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void appendArgument(bool); 57bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 58bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen protected: 59bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ScriptState* m_scriptState; 60bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen Vector<ScriptValue> m_arguments; 61bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen }; 62bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 63bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen class ScriptFunctionCall : public ScriptCallArgumentHandler { 64bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen public: 65bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ScriptFunctionCall(const ScriptObject& thisObject, const String& name); 665f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ScriptValue call(bool& hadException, bool reportExceptions = true); 675f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ScriptValue call(); 685f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ScriptObject construct(bool& hadException, bool reportExceptions = true); 69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 705f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian protected: 715f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ScriptObject m_thisObject; 725f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian String m_name; 73bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen }; 74bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 75bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen class ScriptCallback : public ScriptCallArgumentHandler { 76bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen public: 77bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ScriptCallback(ScriptState*, ScriptValue); 78bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 79bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ScriptValue call(); 80bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ScriptValue call(bool& hadException); 81bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 82bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen private: 83bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen ScriptValue m_function; 845f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian }; 85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 86635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} // namespace WebCore 87635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 885f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif // ScriptFunctionCall 89