1 // Copyright 2017 Samsung Electronics. 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.
5 #ifndef EWK_EFL_INTEGRATION_BROWSER_JAVASCRIPT_INTERFACE_GIN_NATIVE_BOUND_OBJECT_H_
6 #define EWK_EFL_INTEGRATION_BROWSER_JAVASCRIPT_INTERFACE_GIN_NATIVE_BOUND_OBJECT_H_
14 #include "base/memory/ref_counted.h"
15 #include "public/ewk_view.h"
19 class GinNativeBoundObject
20 : public base::RefCountedThreadSafe<GinNativeBoundObject> {
24 Ewk_View_Script_Message_Cb callback,
25 const std::string& name);
28 Ewk_View_Script_Message_Cb callback,
29 const std::string& name,
30 const std::set<int32_t>& holders);
32 typedef int32_t ObjectID;
33 static GinNativeBoundObject* CreateNamed(
35 Ewk_View_Script_Message_Cb callback,
36 const std::string& name);
37 static GinNativeBoundObject* CreateTransient(
39 Ewk_View_Script_Message_Cb callback,
40 const std::string& name,
42 void AddName() { ++names_count_; }
43 void RemoveName() { --names_count_; }
44 Evas_Object* GetView() const { return obj_; }
45 Ewk_View_Script_Message_Cb CallBack() const { return callback_; }
46 const char* Name() const { return name_.c_str(); }
49 friend class base::RefCountedThreadSafe<GinNativeBoundObject>;
50 ~GinNativeBoundObject();
53 Ewk_View_Script_Message_Cb callback_;
56 // An object must be kept in retained_object_set_ either if it has
57 // names or if it has a non-empty holders set.
59 std::set<int32_t> holders_;
62 } // namespace content
64 #endif // EWK_EFL_INTEGRATION_BROWSER_JAVASCRIPT_INTERFACE_GIN_NATIVE_BOUND_OBJECT_H_