Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: webkit/glue/cpp_binding_example.h

Issue 15961005: move webkit/glue/cpp_* -> webkit/renderer/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: renderer/ not child/ Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /*
6 CppBindingExample class:
7 This provides an example of how to use the CppBoundClass to create methods
8 and properties that can be exposed to JavaScript by an appropriately built
9 embedding client. It is also used by the CppBoundClass unit test.
10
11 Typically, a class intended to be bound to JavaScript will define a
12 constructor, any methods and properties to be exposed, and optionally a
13 destructor. An embedding client can then bind the class to a JavaScript
14 object in a frame's window using the CppBoundClass::BindToJavascript() method,
15 generally called from the WebFrameClient's DidClearWindowObject().
16
17 Once this class has been bound, say to the name "example", it might be called
18 from JavaScript in the following way:
19
20 <script>
21 if (window.example) {
22 document.writeln(example.echoValue(false));
23 document.writeln(example.echoType("Hello world!"));
24 document.writeln(example.plus(2, 3.1));
25
26 example.my_value = 15;
27 example.my_other_value = 2.1;
28 document.writeln(example.plus(example.my_value, example.my_other_value));
29 }
30 </script>
31 */
32
33 #ifndef CPP_BINDING_EXAMPLE_H__
34 #define CPP_BINDING_EXAMPLE_H__
35
36 #include "webkit/glue/cpp_bound_class.h"
37
38 namespace webkit_glue {
39
40 class CppBindingExample : public CppBoundClass {
41 public:
42 // The default constructor initializes the property and method lists needed
43 // to bind this class to a JS object.
44 CppBindingExample();
45
46 //
47 // These public member variables and methods implement the methods and
48 // properties that will be exposed to JavaScript. If needed, the class could
49 // also contain other methods or variables, which will be hidden from JS
50 // as long as they're not mapped in the property and method lists created in
51 // the constructor.
52 //
53 // The signatures of any methods to be bound must match
54 // CppBoundClass::Callback.
55 //
56
57 // Returns the value that was passed in as its first (only) argument.
58 void echoValue(const CppArgumentList& args, CppVariant* result);
59
60 // Returns a hard-coded value of the same type (bool, number (double),
61 // string, or null) that was passed in as an argument.
62 void echoType(const CppArgumentList& args, CppVariant* result);
63
64 // Returns the sum of the (first) two arguments as a double, if they are both
65 // numbers (integers or doubles). Otherwise returns null.
66 void plus(const CppArgumentList& args, CppVariant* result);
67
68 // Always returns the same value -- an example of a read-only property.
69 void same(CppVariant* result);
70
71 // Invoked when a nonexistent method is called on this example object, this
72 // prints an error message.
73 void fallbackMethod(const CppArgumentList& args, CppVariant* result);
74
75 // These properties will also be exposed to JavaScript.
76 CppVariant my_value;
77 CppVariant my_other_value;
78 };
79
80 } // namespace webkit_glue
81
82 #endif // CPP_BINDING_EXAMPLE_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698