| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/process_util.h" | 10 #include "base/process_util.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 } | 56 } |
| 57 GURL url_; | 57 GURL url_; |
| 58 }; | 58 }; |
| 59 | 59 |
| 60 } // end namespace | 60 } // end namespace |
| 61 | 61 |
| 62 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { | 62 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { |
| 63 public: | 63 public: |
| 64 virtual PrerenderContents* CreatePrerenderContents( | 64 virtual PrerenderContents* CreatePrerenderContents( |
| 65 PrerenderManager* prerender_manager, PrerenderTracker* prerender_tracker, | 65 PrerenderManager* prerender_manager, PrerenderTracker* prerender_tracker, |
| 66 Profile* profile, const GURL& url, const GURL& referrer, | 66 Profile* profile, const GURL& url, const content::Referrer& referrer, |
| 67 Origin origin, uint8 experiment_id) OVERRIDE { | 67 Origin origin, uint8 experiment_id) OVERRIDE { |
| 68 return new PrerenderContents(prerender_manager, prerender_tracker, profile, | 68 return new PrerenderContents(prerender_manager, prerender_tracker, profile, |
| 69 url, referrer, origin, experiment_id); | 69 url, referrer, origin, experiment_id); |
| 70 } | 70 } |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 PrerenderContents::PendingPrerenderData::PendingPrerenderData( | 73 PrerenderContents::PendingPrerenderData::PendingPrerenderData( |
| 74 Origin origin, | 74 Origin origin, |
| 75 const GURL& url, | 75 const GURL& url, |
| 76 const GURL& referrer) | 76 const content::Referrer& referrer) |
| 77 : origin(origin), | 77 : origin(origin), |
| 78 url(url), | 78 url(url), |
| 79 referrer(referrer) { | 79 referrer(referrer) { |
| 80 } | 80 } |
| 81 | 81 |
| 82 // TabContentsDelegateImpl ----------------------------------------------------- | 82 // TabContentsDelegateImpl ----------------------------------------------------- |
| 83 | 83 |
| 84 class PrerenderContents::TabContentsDelegateImpl | 84 class PrerenderContents::TabContentsDelegateImpl |
| 85 : public TabContentsDelegate { | 85 : public TabContentsDelegate { |
| 86 public: | 86 public: |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 AddPageVector; | 138 AddPageVector; |
| 139 | 139 |
| 140 // Caches pages to be added to the history. | 140 // Caches pages to be added to the history. |
| 141 AddPageVector add_page_vector_; | 141 AddPageVector add_page_vector_; |
| 142 | 142 |
| 143 PrerenderContents* prerender_contents_; | 143 PrerenderContents* prerender_contents_; |
| 144 }; | 144 }; |
| 145 | 145 |
| 146 void PrerenderContents::AddPendingPrerender(Origin origin, | 146 void PrerenderContents::AddPendingPrerender(Origin origin, |
| 147 const GURL& url, | 147 const GURL& url, |
| 148 const GURL& referrer) { | 148 const content::Referrer& referrer) { |
| 149 pending_prerender_list_.push_back( | 149 pending_prerender_list_.push_back( |
| 150 PendingPrerenderData(origin, url, referrer)); | 150 PendingPrerenderData(origin, url, referrer)); |
| 151 } | 151 } |
| 152 | 152 |
| 153 bool PrerenderContents::IsPendingEntry(const GURL& url) const { | 153 bool PrerenderContents::IsPendingEntry(const GURL& url) const { |
| 154 for (PendingPrerenderList::const_iterator it = | 154 for (PendingPrerenderList::const_iterator it = |
| 155 pending_prerender_list_.begin(); | 155 pending_prerender_list_.begin(); |
| 156 it != pending_prerender_list_.end(); | 156 it != pending_prerender_list_.end(); |
| 157 ++it) { | 157 ++it) { |
| 158 if (it->url == url) | 158 if (it->url == url) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 173 it->referrer, | 173 it->referrer, |
| 174 NULL); | 174 NULL); |
| 175 } | 175 } |
| 176 } | 176 } |
| 177 | 177 |
| 178 PrerenderContents::PrerenderContents( | 178 PrerenderContents::PrerenderContents( |
| 179 PrerenderManager* prerender_manager, | 179 PrerenderManager* prerender_manager, |
| 180 PrerenderTracker* prerender_tracker, | 180 PrerenderTracker* prerender_tracker, |
| 181 Profile* profile, | 181 Profile* profile, |
| 182 const GURL& url, | 182 const GURL& url, |
| 183 const GURL& referrer, | 183 const content::Referrer& referrer, |
| 184 Origin origin, | 184 Origin origin, |
| 185 uint8 experiment_id) | 185 uint8 experiment_id) |
| 186 : prerender_manager_(prerender_manager), | 186 : prerender_manager_(prerender_manager), |
| 187 prerender_tracker_(prerender_tracker), | 187 prerender_tracker_(prerender_tracker), |
| 188 prerender_url_(url), | 188 prerender_url_(url), |
| 189 referrer_(referrer), | 189 referrer_(referrer), |
| 190 profile_(profile), | 190 profile_(profile), |
| 191 page_id_(0), | 191 page_id_(0), |
| 192 has_stopped_loading_(false), | 192 has_stopped_loading_(false), |
| 193 final_status_(FINAL_STATUS_MAX), | 193 final_status_(FINAL_STATUS_MAX), |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 content::Source<TabContents>(new_contents)); | 320 content::Source<TabContents>(new_contents)); |
| 321 | 321 |
| 322 DCHECK(load_start_time_.is_null()); | 322 DCHECK(load_start_time_.is_null()); |
| 323 load_start_time_ = base::TimeTicks::Now(); | 323 load_start_time_ = base::TimeTicks::Now(); |
| 324 | 324 |
| 325 content::PageTransition transition = content::PAGE_TRANSITION_LINK; | 325 content::PageTransition transition = content::PAGE_TRANSITION_LINK; |
| 326 if (origin_ == ORIGIN_OMNIBOX_EXACT || origin_ == ORIGIN_OMNIBOX_EXACT_FULL) | 326 if (origin_ == ORIGIN_OMNIBOX_EXACT || origin_ == ORIGIN_OMNIBOX_EXACT_FULL) |
| 327 transition = content::PAGE_TRANSITION_TYPED; | 327 transition = content::PAGE_TRANSITION_TYPED; |
| 328 new_contents->controller().LoadURL( | 328 new_contents->controller().LoadURL( |
| 329 prerender_url_, | 329 prerender_url_, |
| 330 content::Referrer(referrer_, WebKit::WebReferrerPolicyDefault), | 330 referrer_, |
| 331 transition, std::string()); | 331 transition, std::string()); |
| 332 } | 332 } |
| 333 | 333 |
| 334 bool PrerenderContents::GetChildId(int* child_id) const { | 334 bool PrerenderContents::GetChildId(int* child_id) const { |
| 335 CHECK(child_id); | 335 CHECK(child_id); |
| 336 DCHECK_GE(child_id_, -1); | 336 DCHECK_GE(child_id_, -1); |
| 337 *child_id = child_id_; | 337 *child_id = child_id_; |
| 338 return child_id_ != -1; | 338 return child_id_ != -1; |
| 339 } | 339 } |
| 340 | 340 |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 bool PrerenderContents::IsCrossSiteNavigationPending() const { | 676 bool PrerenderContents::IsCrossSiteNavigationPending() const { |
| 677 if (!prerender_contents_.get() || !prerender_contents_->tab_contents()) | 677 if (!prerender_contents_.get() || !prerender_contents_->tab_contents()) |
| 678 return false; | 678 return false; |
| 679 const TabContents* tab_contents = prerender_contents_->tab_contents(); | 679 const TabContents* tab_contents = prerender_contents_->tab_contents(); |
| 680 return (tab_contents->GetSiteInstance() != | 680 return (tab_contents->GetSiteInstance() != |
| 681 tab_contents->GetPendingSiteInstance()); | 681 tab_contents->GetPendingSiteInstance()); |
| 682 } | 682 } |
| 683 | 683 |
| 684 | 684 |
| 685 } // namespace prerender | 685 } // namespace prerender |
| OLD | NEW |