Home | History | Annotate | Download | only in chromeos
      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