ppb_url_util_thunk.cc 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. #include "ppapi/c/pp_errors.h"
  5. #include "ppapi/shared_impl/ppb_url_util_shared.h"
  6. #include "ppapi/thunk/enter.h"
  7. #include "ppapi/thunk/ppb_instance_api.h"
  8. #include "ppapi/thunk/thunk.h"
  9. namespace ppapi {
  10. namespace thunk {
  11. namespace {
  12. PP_Var ResolveRelativeToDocument(PP_Instance instance,
  13. PP_Var relative,
  14. PP_URLComponents_Dev* components) {
  15. EnterInstance enter(instance);
  16. if (enter.failed())
  17. return PP_MakeUndefined();
  18. return enter.functions()->ResolveRelativeToDocument(instance, relative,
  19. components);
  20. }
  21. PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) {
  22. EnterInstance enter(instance);
  23. if (enter.failed())
  24. return PP_FALSE;
  25. return enter.functions()->DocumentCanRequest(instance, url);
  26. }
  27. PP_Bool DocumentCanAccessDocument(PP_Instance active, PP_Instance target) {
  28. EnterInstance enter(active);
  29. if (enter.failed())
  30. return PP_FALSE;
  31. return enter.functions()->DocumentCanAccessDocument(active, target);
  32. }
  33. PP_Var GetDocumentURL(PP_Instance instance,
  34. PP_URLComponents_Dev* components) {
  35. EnterInstance enter(instance);
  36. if (enter.failed())
  37. return PP_MakeUndefined();
  38. return enter.functions()->GetDocumentURL(instance, components);
  39. }
  40. PP_Var GetPluginInstanceURL(PP_Instance instance,
  41. PP_URLComponents_Dev* components) {
  42. EnterInstance enter(instance);
  43. if (enter.failed())
  44. return PP_MakeUndefined();
  45. return enter.functions()->GetPluginInstanceURL(instance, components);
  46. }
  47. PP_Var GetPluginReferrerURL(PP_Instance instance,
  48. PP_URLComponents_Dev* components) {
  49. EnterInstance enter(instance);
  50. if (enter.failed())
  51. return PP_MakeUndefined();
  52. return enter.functions()->GetPluginReferrerURL(instance, components);
  53. }
  54. const PPB_URLUtil_Dev_0_6 g_ppb_url_util_0_6 = {
  55. &PPB_URLUtil_Shared::Canonicalize,
  56. &PPB_URLUtil_Shared::ResolveRelativeToURL,
  57. &ResolveRelativeToDocument,
  58. &PPB_URLUtil_Shared::IsSameSecurityOrigin,
  59. &DocumentCanRequest,
  60. &DocumentCanAccessDocument,
  61. &GetDocumentURL,
  62. &GetPluginInstanceURL
  63. };
  64. const PPB_URLUtil_Dev_0_7 g_ppb_url_util_0_7 = {
  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. &GetPluginReferrerURL
  74. };
  75. } // namespace
  76. const PPB_URLUtil_Dev_0_6* GetPPB_URLUtil_Dev_0_6_Thunk() {
  77. return &g_ppb_url_util_0_6;
  78. }
  79. const PPB_URLUtil_Dev_0_7* GetPPB_URLUtil_Dev_0_7_Thunk() {
  80. return &g_ppb_url_util_0_7;
  81. }
  82. } // namespace thunk
  83. } // namespace ppapi