| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef CONTENT_BROWSER_LOADER_CROSS_SITE_RESOURCE_HANDLER_H_ | 5 #ifndef CONTENT_BROWSER_LOADER_CROSS_SITE_RESOURCE_HANDLER_H_ | 
| 6 #define CONTENT_BROWSER_LOADER_CROSS_SITE_RESOURCE_HANDLER_H_ | 6 #define CONTENT_BROWSER_LOADER_CROSS_SITE_RESOURCE_HANDLER_H_ | 
| 7 | 7 | 
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" | 
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" | 
| 10 #include "content/browser/loader/layered_resource_handler.h" | 10 #include "content/browser/loader/layered_resource_handler.h" | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 46 | 46 | 
| 47   // We can now send the response to the new renderer, which will cause | 47   // We can now send the response to the new renderer, which will cause | 
| 48   // WebContentsImpl to swap in the new renderer and destroy the old one. | 48   // WebContentsImpl to swap in the new renderer and destroy the old one. | 
| 49   void ResumeResponse(); | 49   void ResumeResponse(); | 
| 50 | 50 | 
| 51   // When set to true, requests are leaked when they can't be passed to a | 51   // When set to true, requests are leaked when they can't be passed to a | 
| 52   // RenderViewHost, for unit tests. | 52   // RenderViewHost, for unit tests. | 
| 53   CONTENT_EXPORT static void SetLeakRequestsForTesting( | 53   CONTENT_EXPORT static void SetLeakRequestsForTesting( | 
| 54       bool leak_requests_for_testing); | 54       bool leak_requests_for_testing); | 
| 55 | 55 | 
|  | 56   // Navigations are deferred at OnResponseStarted to parse out any navigation | 
|  | 57   // transition link headers, and give the navigation transition (if it exists) | 
|  | 58   // a chance to run. | 
|  | 59   void ResumeResponseDeferredAtStart(int request_id); | 
|  | 60 | 
|  | 61   // Returns whether the handler is deferred. | 
|  | 62   bool is_deferred_for_testing() const { return did_defer_; } | 
|  | 63 | 
| 56  private: | 64  private: | 
| 57   // Prepare to render the cross-site response in a new RenderViewHost, by | 65   // Prepare to render the cross-site response in a new RenderViewHost, by | 
| 58   // telling the old RenderViewHost to run its onunload handler. | 66   // telling the old RenderViewHost to run its onunload handler. | 
| 59   void StartCrossSiteTransition(int request_id, | 67   void StartCrossSiteTransition(int request_id, | 
| 60                                 ResourceResponse* response, | 68                                 ResourceResponse* response, | 
| 61                                 bool should_transfer); | 69                                 bool should_transfer); | 
| 62 | 70 | 
| 63   // Defer the navigation to the UI thread to check whether transfer is required | 71   // Defer the navigation to the UI thread to check whether transfer is required | 
| 64   // or not. Currently only used in --site-per-process. | 72   // or not. Currently only used in --site-per-process. | 
| 65   bool DeferForNavigationPolicyCheck(ResourceRequestInfoImpl* info, | 73   bool DeferForNavigationPolicyCheck(ResourceRequestInfoImpl* info, | 
| 66                                      ResourceResponse* response, | 74                                      ResourceResponse* response, | 
| 67                                      bool* defer); | 75                                      bool* defer); | 
| 68 | 76 | 
|  | 77   bool OnNavigationTransitionResponseStarted(int request_id, | 
|  | 78                                              ResourceResponse* response, | 
|  | 79                                              bool* defer); | 
|  | 80 | 
|  | 81   bool OnNormalResponseStarted(int request_id, | 
|  | 82                                ResourceResponse* response, | 
|  | 83                                bool* defer); | 
|  | 84 | 
| 69   void ResumeOrTransfer(bool is_transfer); | 85   void ResumeOrTransfer(bool is_transfer); | 
| 70   void ResumeIfDeferred(); | 86   void ResumeIfDeferred(); | 
| 71 | 87 | 
| 72   // Called when about to defer a request.  Sets |did_defer_| and logs the | 88   // Called when about to defer a request.  Sets |did_defer_| and logs the | 
| 73   // defferral | 89   // defferral | 
| 74   void OnDidDefer(); | 90   void OnDidDefer(); | 
| 75 | 91 | 
| 76   bool has_started_response_; | 92   bool has_started_response_; | 
| 77   bool in_cross_site_transition_; | 93   bool in_cross_site_transition_; | 
| 78   bool completed_during_transition_; | 94   bool completed_during_transition_; | 
| 79   bool did_defer_; | 95   bool did_defer_; | 
| 80   net::URLRequestStatus completed_status_; | 96   net::URLRequestStatus completed_status_; | 
| 81   std::string completed_security_info_; | 97   std::string completed_security_info_; | 
| 82   scoped_refptr<ResourceResponse> response_; | 98   scoped_refptr<ResourceResponse> response_; | 
| 83 | 99 | 
| 84   // TODO(nasko): WeakPtr is needed in --site-per-process, since all navigations | 100   // TODO(nasko): WeakPtr is needed in --site-per-process, since all navigations | 
| 85   // are deferred to the UI thread and come back to IO thread via | 101   // are deferred to the UI thread and come back to IO thread via | 
| 86   // PostTaskAndReplyWithResult. If a transfer is needed, it goes back to the UI | 102   // PostTaskAndReplyWithResult. If a transfer is needed, it goes back to the UI | 
| 87   // thread. This can be removed once the code is changed to only do one hop. | 103   // thread. This can be removed once the code is changed to only do one hop. | 
| 88   base::WeakPtrFactory<CrossSiteResourceHandler> weak_ptr_factory_; | 104   base::WeakPtrFactory<CrossSiteResourceHandler> weak_ptr_factory_; | 
| 89 | 105 | 
| 90   DISALLOW_COPY_AND_ASSIGN(CrossSiteResourceHandler); | 106   DISALLOW_COPY_AND_ASSIGN(CrossSiteResourceHandler); | 
| 91 }; | 107 }; | 
| 92 | 108 | 
| 93 }  // namespace content | 109 }  // namespace content | 
| 94 | 110 | 
| 95 #endif  // CONTENT_BROWSER_LOADER_CROSS_SITE_RESOURCE_HANDLER_H_ | 111 #endif  // CONTENT_BROWSER_LOADER_CROSS_SITE_RESOURCE_HANDLER_H_ | 
| OLD | NEW | 
|---|