- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / thunk / ppb_url_util_thunk.cc
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 #include "ppapi/c/pp_errors.h"
6 #include "ppapi/shared_impl/ppb_url_util_shared.h"
7 #include "ppapi/thunk/enter.h"
8 #include "ppapi/thunk/ppb_instance_api.h"
9 #include "ppapi/thunk/thunk.h"
10
11 namespace ppapi {
12 namespace thunk {
13
14 namespace {
15
16 PP_Var ResolveRelativeToDocument(PP_Instance instance,
17                                  PP_Var relative,
18                                  PP_URLComponents_Dev* components) {
19   EnterInstance enter(instance);
20   if (enter.failed())
21     return PP_MakeUndefined();
22   return enter.functions()->ResolveRelativeToDocument(instance, relative,
23                                                       components);
24 }
25
26 PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) {
27   EnterInstance enter(instance);
28   if (enter.failed())
29     return PP_FALSE;
30   return enter.functions()->DocumentCanRequest(instance, url);
31 }
32
33 PP_Bool DocumentCanAccessDocument(PP_Instance active, PP_Instance target) {
34   EnterInstance enter(active);
35   if (enter.failed())
36     return PP_FALSE;
37   return enter.functions()->DocumentCanAccessDocument(active, target);
38 }
39
40 PP_Var GetDocumentURL(PP_Instance instance,
41                       PP_URLComponents_Dev* components) {
42   EnterInstance enter(instance);
43   if (enter.failed())
44     return PP_MakeUndefined();
45   return enter.functions()->GetDocumentURL(instance, components);
46 }
47
48 PP_Var GetPluginInstanceURL(PP_Instance instance,
49                             PP_URLComponents_Dev* components) {
50   EnterInstance enter(instance);
51   if (enter.failed())
52     return PP_MakeUndefined();
53   return enter.functions()->GetPluginInstanceURL(instance, components);
54 }
55
56 PP_Var GetPluginReferrerURL(PP_Instance instance,
57                             PP_URLComponents_Dev* components) {
58   EnterInstance enter(instance);
59   if (enter.failed())
60     return PP_MakeUndefined();
61   return enter.functions()->GetPluginReferrerURL(instance, components);
62 }
63
64 const PPB_URLUtil_Dev_0_6 g_ppb_url_util_0_6 = {
65   &PPB_URLUtil_Shared::Canonicalize,
66   &PPB_URLUtil_Shared::ResolveRelativeToURL,
67   &ResolveRelativeToDocument,
68   &PPB_URLUtil_Shared::IsSameSecurityOrigin,
69   &DocumentCanRequest,
70   &DocumentCanAccessDocument,
71   &GetDocumentURL,
72   &GetPluginInstanceURL
73 };
74
75 const PPB_URLUtil_Dev_0_7 g_ppb_url_util_0_7 = {
76   &PPB_URLUtil_Shared::Canonicalize,
77   &PPB_URLUtil_Shared::ResolveRelativeToURL,
78   &ResolveRelativeToDocument,
79   &PPB_URLUtil_Shared::IsSameSecurityOrigin,
80   &DocumentCanRequest,
81   &DocumentCanAccessDocument,
82   &GetDocumentURL,
83   &GetPluginInstanceURL,
84   &GetPluginReferrerURL
85 };
86
87 }  // namespace
88
89 const PPB_URLUtil_Dev_0_6* GetPPB_URLUtil_Dev_0_6_Thunk() {
90   return &g_ppb_url_util_0_6;
91 }
92
93 const PPB_URLUtil_Dev_0_7* GetPPB_URLUtil_Dev_0_7_Thunk() {
94   return &g_ppb_url_util_0_7;
95 }
96
97 }  // namespace thunk
98 }  // namespace ppapi