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 #include "chrome/browser/prerender/prerender_contents.h" | 5 #include "chrome/browser/prerender/prerender_contents.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <functional> | 10 #include <functional> |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 const char* const kValidHttpMethods[] = { | 63 const char* const kValidHttpMethods[] = { |
64 "GET", "HEAD", | 64 "GET", "HEAD", |
65 }; | 65 }; |
66 | 66 |
67 // Additional valid HTTP methods for prerendering. | 67 // Additional valid HTTP methods for prerendering. |
68 const char* const kValidHttpMethodsForPrerendering[] = { | 68 const char* const kValidHttpMethodsForPrerendering[] = { |
69 "OPTIONS", "POST", "TRACE", | 69 "OPTIONS", "POST", "TRACE", |
70 }; | 70 }; |
71 | 71 |
72 void ResumeThrottles( | 72 void ResumeThrottles( |
73 std::vector<base::WeakPtr<PrerenderResourceThrottle> > throttles) { | 73 std::vector<base::WeakPtr<PrerenderResourceThrottle>> throttles, |
| 74 std::vector<base::WeakPtr<PrerenderResourceThrottle>> idle_resources) { |
| 75 for (auto resource : idle_resources) { |
| 76 if (resource) |
| 77 resource->ResetResourcePriority(); |
| 78 } |
74 for (size_t i = 0; i < throttles.size(); i++) { | 79 for (size_t i = 0; i < throttles.size(); i++) { |
75 if (throttles[i]) | 80 if (throttles[i]) |
76 throttles[i]->ResumeHandler(); | 81 throttles[i]->ResumeHandler(); |
77 } | 82 } |
78 } | 83 } |
79 | 84 |
80 } // namespace | 85 } // namespace |
81 | 86 |
82 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { | 87 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { |
83 public: | 88 public: |
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 SetFinalStatus(FINAL_STATUS_USED); | 755 SetFinalStatus(FINAL_STATUS_USED); |
751 | 756 |
752 if (prerender_contents_.get()) { | 757 if (prerender_contents_.get()) { |
753 prerender_contents_->SendToAllFrames( | 758 prerender_contents_->SendToAllFrames( |
754 new PrerenderMsg_SetIsPrerendering(MSG_ROUTING_NONE, NO_PRERENDER)); | 759 new PrerenderMsg_SetIsPrerendering(MSG_ROUTING_NONE, NO_PRERENDER)); |
755 } | 760 } |
756 | 761 |
757 NotifyPrerenderStop(); | 762 NotifyPrerenderStop(); |
758 | 763 |
759 BrowserThread::PostTask( | 764 BrowserThread::PostTask( |
760 BrowserThread::IO, | 765 BrowserThread::IO, FROM_HERE, |
761 FROM_HERE, | 766 base::Bind(&ResumeThrottles, resource_throttles_, idle_resources_)); |
762 base::Bind(&ResumeThrottles, resource_throttles_)); | |
763 resource_throttles_.clear(); | 767 resource_throttles_.clear(); |
| 768 idle_resources_.clear(); |
764 } | 769 } |
765 | 770 |
766 void PrerenderContents::CancelPrerenderForPrinting() { | 771 void PrerenderContents::CancelPrerenderForPrinting() { |
767 Destroy(FINAL_STATUS_WINDOW_PRINT); | 772 Destroy(FINAL_STATUS_WINDOW_PRINT); |
768 } | 773 } |
769 | 774 |
770 void PrerenderContents::OnPrerenderCancelerRequest( | 775 void PrerenderContents::OnPrerenderCancelerRequest( |
771 chrome::mojom::PrerenderCancelerRequest request) { | 776 chrome::mojom::PrerenderCancelerRequest request) { |
772 if (!prerender_canceler_binding_.is_bound()) | 777 if (!prerender_canceler_binding_.is_bound()) |
773 prerender_canceler_binding_.Bind(std::move(request)); | 778 prerender_canceler_binding_.Bind(std::move(request)); |
774 } | 779 } |
775 | 780 |
776 void PrerenderContents::AddResourceThrottle( | 781 void PrerenderContents::AddResourceThrottle( |
777 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { | 782 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { |
778 resource_throttles_.push_back(throttle); | 783 resource_throttles_.push_back(throttle); |
779 } | 784 } |
780 | 785 |
| 786 void PrerenderContents::AddIdleResource( |
| 787 const base::WeakPtr<PrerenderResourceThrottle>& throttle) { |
| 788 idle_resources_.push_back(throttle); |
| 789 } |
| 790 |
781 void PrerenderContents::AddNetworkBytes(int64_t bytes) { | 791 void PrerenderContents::AddNetworkBytes(int64_t bytes) { |
782 network_bytes_ += bytes; | 792 network_bytes_ += bytes; |
783 for (Observer& observer : observer_list_) | 793 for (Observer& observer : observer_list_) |
784 observer.OnPrerenderNetworkBytesChanged(this); | 794 observer.OnPrerenderNetworkBytesChanged(this); |
785 } | 795 } |
786 | 796 |
787 } // namespace prerender | 797 } // namespace prerender |
OLD | NEW |