// 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 CHROME_BROWSER_CUSTOM_HANDLERS_PROTOCOL_HANDLER_H_ #define CHROME_BROWSER_CUSTOM_HANDLERS_PROTOCOL_HANDLER_H_ #pragma once #include <string> #include "base/values.h" #include "googleurl/src/gurl.h" // A single tuple of (protocol, url, title) that indicates how URLs of the // given protocol should be rewritten to be handled. class ProtocolHandler { public: static ProtocolHandler* CreateProtocolHandler(const std::string& protocol, const GURL& url, const string16& title); static ProtocolHandler* CreateProtocolHandler(const DictionaryValue* value); // Interpolates the given URL into the URL template of this handler. GURL TranslateUrl(const GURL& url); // Encodes this protocol handler as a Value. The caller is responsible for // deleting the returned value. Value* Encode(); std::string protocol() const { return protocol_; } GURL url() const { return url_;} string16 title() const { return title_; } bool operator==(const ProtocolHandler &other) const; private: ProtocolHandler(const std::string& protocol, const GURL& url, const string16& title); const std::string protocol_; const GURL url_; const string16 title_; }; #endif // CHROME_BROWSER_CUSTOM_HANDLERS_PROTOCOL_HANDLER_H_