// 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_