1 // Copyright (c) 2009 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 CHROME_BROWSER_CHROMEOS_GVIEW_REQUEST_INTERCEPTOR_H__ 6 #define CHROME_BROWSER_CHROMEOS_GVIEW_REQUEST_INTERCEPTOR_H__ 7 #pragma once 8 9 #include <string> 10 #include "base/hash_tables.h" 11 #include "net/url_request/url_request.h" 12 13 template <typename T> struct DefaultSingletonTraits; 14 15 namespace chromeos { 16 17 // This class integrates the Google Document Viewer into ChromeOS, 18 // enabling the viewing of supported document types that the user 19 // clicks on. This class will intercept requests to supported 20 // document types (such as PDF) and redirect the request to the Google 21 // Document Viewer, including the document's original URL as a 22 // parameter. 23 class GViewRequestInterceptor : public net::URLRequest::Interceptor { 24 public: 25 // Always returns NULL because we don't want to attempt a redirect 26 // before seeing the detected mime type of the request. 27 virtual net::URLRequestJob* MaybeIntercept(net::URLRequest* request); 28 29 // Determines if the requested document can be viewed by the Google 30 // Document Viewer. If it can, returns a net::URLRequestJob that 31 // redirects the browser to the view URL. 32 virtual net::URLRequestJob* MaybeInterceptResponse(net::URLRequest* request); 33 34 // Singleton accessor. 35 static GViewRequestInterceptor* GetInstance(); 36 37 private: 38 friend struct DefaultSingletonTraits<GViewRequestInterceptor>; 39 40 GViewRequestInterceptor(); 41 virtual ~GViewRequestInterceptor(); 42 43 // The list of supported mime types. 44 base::hash_set<std::string> supported_mime_types_; 45 }; 46 47 } // namespace chromeos 48 49 #endif // CHROME_BROWSER_CHROMEOS_GVIEW_REQUEST_INTERCEPTOR_H__ 50