| // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef PPAPI_CPP_DEV_URL_UTIL_DEV_H_ | 
 | #define PPAPI_CPP_DEV_URL_UTIL_DEV_H_ | 
 |  | 
 | #include "ppapi/c/dev/ppb_url_util_dev.h" | 
 | #include "ppapi/cpp/var.h" | 
 |  | 
 | namespace pp { | 
 |  | 
 | class InstanceHandle; | 
 |  | 
 | // Simple wrapper around the PPB_URLUtil interface. | 
 | class URLUtil_Dev { | 
 |  public: | 
 |   // This class is just a collection of random functions that aren't | 
 |   // particularly attached to anything. This may return NULL if the | 
 |   // browser doesn't support the URLUtil interface. Since this is a | 
 |   // singleton, don't delete the pointer. | 
 |   static const URLUtil_Dev* Get(); | 
 |  | 
 |   Var Canonicalize(const Var& url, | 
 |                    PP_URLComponents_Dev* components = NULL) const; | 
 |  | 
 |   Var ResolveRelativeToURL(const Var& base_url, | 
 |                            const Var& relative_string, | 
 |                            PP_URLComponents_Dev* components = NULL) const; | 
 |   Var ResolveRelativeToDocument(const InstanceHandle& instance, | 
 |                                 const Var& relative_string, | 
 |                                 PP_URLComponents_Dev* components = NULL) const; | 
 |  | 
 |   bool IsSameSecurityOrigin(const Var& url_a, const Var& url_b) const; | 
 |   bool DocumentCanRequest(const InstanceHandle& instance, const Var& url) const; | 
 |   bool DocumentCanAccessDocument(const InstanceHandle& active, | 
 |                                  const InstanceHandle& target) const; | 
 |   Var GetDocumentURL(const InstanceHandle& instance, | 
 |                      PP_URLComponents_Dev* components = NULL) const; | 
 |  | 
 |   Var GetPluginInstanceURL(const InstanceHandle& instance, | 
 |                            PP_URLComponents_Dev* components = NULL) const; | 
 |   Var GetPluginReferrerURL(const InstanceHandle& instance, | 
 |                            PP_URLComponents_Dev* components = NULL) const; | 
 |  | 
 |  private: | 
 |   URLUtil_Dev() {} | 
 |  | 
 |   // Copy and assignment are disallowed. | 
 |   URLUtil_Dev(const URLUtil_Dev& other); | 
 |   URLUtil_Dev& operator=(const URLUtil_Dev& other); | 
 | }; | 
 |  | 
 | }  // namespace pp | 
 |  | 
 | #endif  // PPAPI_CPP_DEV_URL_UTIL_DEV_H_ |