1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_CUSTOM_HANDLERS_PROTOCOL_HANDLER_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_CUSTOM_HANDLERS_PROTOCOL_HANDLER_H_ 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#pragma once 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <string> 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/values.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "googleurl/src/gurl.h" 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// A single tuple of (protocol, url, title) that indicates how URLs of the 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// given protocol should be rewritten to be handled. 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass ProtocolHandler { 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public: 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen static ProtocolHandler* CreateProtocolHandler(const std::string& protocol, 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const GURL& url, 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const string16& title); 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen static ProtocolHandler* CreateProtocolHandler(const DictionaryValue* value); 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Interpolates the given URL into the URL template of this handler. 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL TranslateUrl(const GURL& url); 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Encodes this protocol handler as a Value. The caller is responsible for 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // deleting the returned value. 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen Value* Encode(); 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string protocol() const { return protocol_; } 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen GURL url() const { return url_;} 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen string16 title() const { return title_; } 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen bool operator==(const ProtocolHandler &other) const; 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private: 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ProtocolHandler(const std::string& protocol, 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const GURL& url, 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const string16& title); 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const std::string protocol_; 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const GURL url_; 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const string16 title_; 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // CHROME_BROWSER_CUSTOM_HANDLERS_PROTOCOL_HANDLER_H_ 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 48