1 // Copyright (c) 2011 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/cpp/dev/url_util_dev.h" 6 7 #include "ppapi/cpp/instance_handle.h" 8 #include "ppapi/cpp/module.h" 9 10 namespace pp { 11 12 // static 13 const URLUtil_Dev* URLUtil_Dev::Get() { 14 static bool tried_to_init = false; 15 static URLUtil_Dev util; 16 17 if (!tried_to_init) { 18 tried_to_init = true; 19 util.interface_ = static_cast<const PPB_URLUtil_Dev*>( 20 Module::Get()->GetBrowserInterface(PPB_URLUTIL_DEV_INTERFACE)); 21 } 22 23 if (!util.interface_) 24 return NULL; 25 return &util; 26 } 27 28 Var URLUtil_Dev::Canonicalize(const Var& url, 29 PP_URLComponents_Dev* components) const { 30 return Var(PASS_REF, interface_->Canonicalize(url.pp_var(), components)); 31 } 32 33 Var URLUtil_Dev::ResolveRelativeToURL(const Var& base_url, 34 const Var& relative_string, 35 PP_URLComponents_Dev* components) const { 36 return Var(PASS_REF, 37 interface_->ResolveRelativeToURL(base_url.pp_var(), 38 relative_string.pp_var(), 39 components)); 40 } 41 42 Var URLUtil_Dev::ResolveRelativeToDocument( 43 const InstanceHandle& instance, 44 const Var& relative_string, 45 PP_URLComponents_Dev* components) const { 46 return Var(PASS_REF, 47 interface_->ResolveRelativeToDocument(instance.pp_instance(), 48 relative_string.pp_var(), 49 components)); 50 } 51 52 bool URLUtil_Dev::IsSameSecurityOrigin(const Var& url_a, 53 const Var& url_b) const { 54 return PP_ToBool(interface_->IsSameSecurityOrigin(url_a.pp_var(), 55 url_b.pp_var())); 56 } 57 58 bool URLUtil_Dev::DocumentCanRequest(const InstanceHandle& instance, 59 const Var& url) const { 60 return PP_ToBool(interface_->DocumentCanRequest(instance.pp_instance(), 61 url.pp_var())); 62 } 63 64 bool URLUtil_Dev::DocumentCanAccessDocument( 65 const InstanceHandle& active, 66 const InstanceHandle& target) const { 67 return PP_ToBool( 68 interface_->DocumentCanAccessDocument(active.pp_instance(), 69 target.pp_instance())); 70 } 71 72 Var URLUtil_Dev::GetDocumentURL(const InstanceHandle& instance, 73 PP_URLComponents_Dev* components) const { 74 return Var(PASS_REF, 75 interface_->GetDocumentURL(instance.pp_instance(), components)); 76 } 77 78 Var URLUtil_Dev::GetPluginInstanceURL(const InstanceHandle& instance, 79 PP_URLComponents_Dev* components) const { 80 return Var(PASS_REF, 81 interface_->GetPluginInstanceURL(instance.pp_instance(), 82 components)); 83 } 84 85 } // namespace pp 86