• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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