Home | History | Annotate | Download | only in thunk
      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
     99