Home | History | Annotate | Download | only in shared_impl
      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 #ifndef PPAPI_SHARED_IMPL_PPB_URL_UTIL_SHARED_H_
      6 #define PPAPI_SHARED_IMPL_PPB_URL_UTIL_SHARED_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "ppapi/c/dev/ppb_url_util_dev.h"
     12 #include "ppapi/c/pp_var.h"
     13 #include "ppapi/shared_impl/ppapi_shared_export.h"
     14 #include "url/url_parse.h"
     15 
     16 class GURL;
     17 
     18 namespace ppapi {
     19 
     20 // Contains the implementation of PPB_URLUtil that is shared between the proxy
     21 // and the renderer.
     22 class PPAPI_SHARED_EXPORT PPB_URLUtil_Shared {
     23  public:
     24   // PPB_URLUtil shared functions.
     25   static PP_Var Canonicalize(PP_Var url,
     26                              PP_URLComponents_Dev* components);
     27   static PP_Var ResolveRelativeToURL(PP_Var base_url,
     28                                      PP_Var relative,
     29                                      PP_URLComponents_Dev* components);
     30   static PP_Bool IsSameSecurityOrigin(PP_Var url_a, PP_Var url_b);
     31 
     32   // Used for returning the given GURL from a PPAPI function, with an optional
     33   // out param indicating the components.
     34   static PP_Var GenerateURLReturn(const GURL& url,
     35                                   PP_URLComponents_Dev* components);
     36 
     37   // Helper function that optionally take a components structure and fills it
     38   // out with the parsed version of the given URL. If the components pointer is
     39   // NULL, this function will do nothing.
     40   //
     41   // It's annoying to serialze the large PP_URLComponents structure across IPC
     42   // and the data isn't often requested by plugins. This function is used on
     43   // the plugin side to fill in the components for those cases where it's
     44   // actually needed.
     45   static PP_Var ConvertComponentsAndReturnURL(const PP_Var& url,
     46                                               PP_URLComponents_Dev* components);
     47 };
     48 
     49 }  // namespace ppapi
     50 
     51 #endif  // PPAPI_SHARED_IMPL_PPB_URL_UTIL_SHARED_H_
     52