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_manager.h" | 5 #include "chrome/browser/prerender/prerender_manager.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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 using content::WebContents; | 68 using content::WebContents; |
69 using namespace chrome_browser_net; | 69 using namespace chrome_browser_net; |
70 | 70 |
71 namespace prerender { | 71 namespace prerender { |
72 | 72 |
73 namespace { | 73 namespace { |
74 | 74 |
75 // Time interval at which periodic cleanups are performed. | 75 // Time interval at which periodic cleanups are performed. |
76 const int kPeriodicCleanupIntervalMs = 1000; | 76 const int kPeriodicCleanupIntervalMs = 1000; |
77 | 77 |
78 // Valid HTTP methods for prerendering. | |
79 const char* const kValidHttpMethods[] = { | |
80 "GET", | |
81 "HEAD", | |
82 "OPTIONS", | |
83 "POST", | |
84 "TRACE", | |
85 }; | |
86 | |
87 // Length of prerender history, for display in chrome://net-internals | 78 // Length of prerender history, for display in chrome://net-internals |
88 const int kHistoryLength = 100; | 79 const int kHistoryLength = 100; |
89 | 80 |
90 } // namespace | 81 } // namespace |
91 | 82 |
92 class PrerenderManager::OnCloseWebContentsDeleter | 83 class PrerenderManager::OnCloseWebContentsDeleter |
93 : public content::WebContentsDelegate, | 84 : public content::WebContentsDelegate, |
94 public base::SupportsWeakPtr< | 85 public base::SupportsWeakPtr< |
95 PrerenderManager::OnCloseWebContentsDeleter> { | 86 PrerenderManager::OnCloseWebContentsDeleter> { |
96 public: | 87 public: |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 base::TimeDelta delta = GetCurrentTimeTicks() - it->time; | 718 base::TimeDelta delta = GetCurrentTimeTicks() - it->time; |
728 histograms_->RecordTimeSinceLastRecentVisit(origin, delta); | 719 histograms_->RecordTimeSinceLastRecentVisit(origin, delta); |
729 return true; | 720 return true; |
730 } | 721 } |
731 } | 722 } |
732 | 723 |
733 return false; | 724 return false; |
734 } | 725 } |
735 | 726 |
736 // static | 727 // static |
737 bool PrerenderManager::IsValidHttpMethod(const std::string& method) { | |
738 // method has been canonicalized to upper case at this point so we can just | |
739 // compare them. | |
740 DCHECK_EQ(method, base::ToUpperASCII(method)); | |
741 for (size_t i = 0; i < arraysize(kValidHttpMethods); ++i) { | |
742 if (method.compare(kValidHttpMethods[i]) == 0) | |
743 return true; | |
744 } | |
745 | |
746 return false; | |
747 } | |
748 | |
749 // static | |
750 bool PrerenderManager::DoesURLHaveValidScheme(const GURL& url) { | 728 bool PrerenderManager::DoesURLHaveValidScheme(const GURL& url) { |
751 return (url.SchemeIsHTTPOrHTTPS() || | 729 return (url.SchemeIsHTTPOrHTTPS() || |
752 url.SchemeIs(extensions::kExtensionScheme) || | 730 url.SchemeIs(extensions::kExtensionScheme) || |
753 url.SchemeIs("data")); | 731 url.SchemeIs("data")); |
754 } | 732 } |
755 | 733 |
756 // static | 734 // static |
757 bool PrerenderManager::DoesSubresourceURLHaveValidScheme(const GURL& url) { | 735 bool PrerenderManager::DoesSubresourceURLHaveValidScheme(const GURL& url) { |
758 return DoesURLHaveValidScheme(url) || url == GURL(url::kAboutBlankURL); | 736 return DoesURLHaveValidScheme(url) || url == GURL(url::kAboutBlankURL); |
759 } | 737 } |
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1365 DCHECK_EQ(1u, erased); | 1343 DCHECK_EQ(1u, erased); |
1366 } | 1344 } |
1367 | 1345 |
1368 void PrerenderManager::SetPrerenderContentsFactoryForTest( | 1346 void PrerenderManager::SetPrerenderContentsFactoryForTest( |
1369 PrerenderContents::Factory* prerender_contents_factory) { | 1347 PrerenderContents::Factory* prerender_contents_factory) { |
1370 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1348 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1371 prerender_contents_factory_.reset(prerender_contents_factory); | 1349 prerender_contents_factory_.reset(prerender_contents_factory); |
1372 } | 1350 } |
1373 | 1351 |
1374 } // namespace prerender | 1352 } // namespace prerender |
OLD | NEW |