1f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch/*
2f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * Copyright (C) 2009 Google Inc. All rights reserved.
3f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch *
4f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * Redistribution and use in source and binary forms, with or without
5f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * modification, are permitted provided that the following conditions are
6f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * met:
7f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch *
8f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch *     * Redistributions of source code must retain the above copyright
9f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * notice, this list of conditions and the following disclaimer.
10f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch *     * Redistributions in binary form must reproduce the above
11f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * copyright notice, this list of conditions and the following disclaimer
12f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * in the documentation and/or other materials provided with the
13f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * distribution.
14f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch *     * Neither the name of Google Inc. nor the names of its
15f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * contributors may be used to endorse or promote products derived from
16f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * this software without specific prior written permission.
17f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch *
18f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch */
30f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
31f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#ifndef V8_INSPECTOR_V8FUNCTIONCALL_H_
32f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define V8_INSPECTOR_V8FUNCTIONCALL_H_
33f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
34f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#include "src/inspector/string-16.h"
35f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
36f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#include "include/v8.h"
37f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
38f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochnamespace v8_inspector {
39f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
40f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochclass V8InspectorImpl;
41f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
42f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdochclass V8FunctionCall {
43f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch public:
44f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V8FunctionCall(V8InspectorImpl*, v8::Local<v8::Context>, v8::Local<v8::Value>,
45f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch                 const String16& name);
46f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
47f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  void appendArgument(v8::Local<v8::Value>);
48f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  void appendArgument(const String16&);
49f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  void appendArgument(int);
50f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  void appendArgument(bool);
51f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
52f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  v8::Local<v8::Value> call(bool& hadException, bool reportExceptions = true);
53f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  v8::Local<v8::Value> callWithoutExceptionHandling();
54f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
55f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch protected:
56f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V8InspectorImpl* m_inspector;
57f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  v8::Local<v8::Context> m_context;
58f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  std::vector<v8::Local<v8::Value>> m_arguments;
59f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  v8::Local<v8::String> m_name;
60f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  v8::Local<v8::Value> m_value;
61f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch};
62f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
63f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch}  // namespace v8_inspector
64f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
65f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#endif  // V8_INSPECTOR_V8FUNCTIONCALL_H_
66