| 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 GURL url_; | 56 GURL url_; |
| 57 }; | 57 }; |
| 58 | 58 |
| 59 } // end namespace | 59 } // end namespace |
| 60 | 60 |
| 61 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { | 61 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { |
| 62 public: | 62 public: |
| 63 virtual PrerenderContents* CreatePrerenderContents( | 63 virtual PrerenderContents* CreatePrerenderContents( |
| 64 PrerenderManager* prerender_manager, PrerenderTracker* prerender_tracker, | 64 PrerenderManager* prerender_manager, PrerenderTracker* prerender_tracker, |
| 65 Profile* profile, const GURL& url, const GURL& referrer, | 65 Profile* profile, const GURL& url, const GURL& referrer, |
| 66 Origin origin) OVERRIDE { | 66 Origin origin, char experiment_id) OVERRIDE { |
| 67 return new PrerenderContents(prerender_manager, prerender_tracker, profile, | 67 return new PrerenderContents(prerender_manager, prerender_tracker, profile, |
| 68 url, referrer, origin); | 68 url, referrer, origin, experiment_id); |
| 69 } | 69 } |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 // TabContentsDelegateImpl ----------------------------------------------------- | 72 // TabContentsDelegateImpl ----------------------------------------------------- |
| 73 | 73 |
| 74 class PrerenderContents::TabContentsDelegateImpl | 74 class PrerenderContents::TabContentsDelegateImpl |
| 75 : public TabContentsDelegate { | 75 : public TabContentsDelegate { |
| 76 public: | 76 public: |
| 77 explicit TabContentsDelegateImpl(PrerenderContents* prerender_contents) : | 77 explicit TabContentsDelegateImpl(PrerenderContents* prerender_contents) : |
| 78 prerender_contents_(prerender_contents) { | 78 prerender_contents_(prerender_contents) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 AddPageVector add_page_vector_; | 121 AddPageVector add_page_vector_; |
| 122 | 122 |
| 123 PrerenderContents* prerender_contents_; | 123 PrerenderContents* prerender_contents_; |
| 124 }; | 124 }; |
| 125 | 125 |
| 126 PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager, | 126 PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager, |
| 127 PrerenderTracker* prerender_tracker, | 127 PrerenderTracker* prerender_tracker, |
| 128 Profile* profile, | 128 Profile* profile, |
| 129 const GURL& url, | 129 const GURL& url, |
| 130 const GURL& referrer, | 130 const GURL& referrer, |
| 131 Origin origin) | 131 Origin origin, |
| 132 char experiment_id) |
| 132 : prerender_manager_(prerender_manager), | 133 : prerender_manager_(prerender_manager), |
| 133 prerender_tracker_(prerender_tracker), | 134 prerender_tracker_(prerender_tracker), |
| 134 prerender_url_(url), | 135 prerender_url_(url), |
| 135 referrer_(referrer), | 136 referrer_(referrer), |
| 136 profile_(profile), | 137 profile_(profile), |
| 137 page_id_(0), | 138 page_id_(0), |
| 138 has_stopped_loading_(false), | 139 has_stopped_loading_(false), |
| 139 final_status_(FINAL_STATUS_MAX), | 140 final_status_(FINAL_STATUS_MAX), |
| 140 prerendering_has_started_(false), | 141 prerendering_has_started_(false), |
| 141 prerendering_has_been_cancelled_(false), | 142 prerendering_has_been_cancelled_(false), |
| 142 child_id_(-1), | 143 child_id_(-1), |
| 143 route_id_(-1), | 144 route_id_(-1), |
| 144 starting_page_id_(-1), | 145 starting_page_id_(-1), |
| 145 origin_(origin) { | 146 origin_(origin), |
| 147 experiment_id_(experiment_id) { |
| 146 DCHECK(prerender_manager != NULL); | 148 DCHECK(prerender_manager != NULL); |
| 147 } | 149 } |
| 148 | 150 |
| 149 bool PrerenderContents::Init() { | 151 bool PrerenderContents::Init() { |
| 150 return AddAliasURL(prerender_url_); | 152 return AddAliasURL(prerender_url_); |
| 151 } | 153 } |
| 152 | 154 |
| 153 // static | 155 // static |
| 154 PrerenderContents::Factory* PrerenderContents::CreateFactory() { | 156 PrerenderContents::Factory* PrerenderContents::CreateFactory() { |
| 155 return new PrerenderContentsFactoryImpl(); | 157 return new PrerenderContentsFactoryImpl(); |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 PrerenderContents::~PrerenderContents() { | 308 PrerenderContents::~PrerenderContents() { |
| 307 DCHECK(final_status_ != FINAL_STATUS_MAX); | 309 DCHECK(final_status_ != FINAL_STATUS_MAX); |
| 308 DCHECK(prerendering_has_been_cancelled_ || | 310 DCHECK(prerendering_has_been_cancelled_ || |
| 309 final_status_ == FINAL_STATUS_USED || | 311 final_status_ == FINAL_STATUS_USED || |
| 310 final_status_ == FINAL_STATUS_CONTROL_GROUP); | 312 final_status_ == FINAL_STATUS_CONTROL_GROUP); |
| 311 DCHECK(origin_ != ORIGIN_MAX); | 313 DCHECK(origin_ != ORIGIN_MAX); |
| 312 | 314 |
| 313 // If we haven't even started prerendering, we were just in the control | 315 // If we haven't even started prerendering, we were just in the control |
| 314 // group, which means we do not want to record the status. | 316 // group, which means we do not want to record the status. |
| 315 if (prerendering_has_started()) | 317 if (prerendering_has_started()) |
| 316 RecordFinalStatus(origin_, final_status_); | 318 prerender_manager_->RecordFinalStatus(origin_, experiment_id_, |
| 319 final_status_); |
| 317 | 320 |
| 318 if (child_id_ != -1 && route_id_ != -1) | 321 if (child_id_ != -1 && route_id_ != -1) |
| 319 prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_); | 322 prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_); |
| 320 | 323 |
| 321 // If we still have a TabContents, clean up anything we need to and then | 324 // If we still have a TabContents, clean up anything we need to and then |
| 322 // destroy it. | 325 // destroy it. |
| 323 if (prerender_contents_.get()) | 326 if (prerender_contents_.get()) |
| 324 delete ReleasePrerenderContents(); | 327 delete ReleasePrerenderContents(); |
| 325 | 328 |
| 326 // The following URLs are no longer rendering. | 329 // The following URLs are no longer rendering. |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 return NULL; | 614 return NULL; |
| 612 DictionaryValue* dict_value = new DictionaryValue(); | 615 DictionaryValue* dict_value = new DictionaryValue(); |
| 613 dict_value->SetString("url", prerender_url_.spec()); | 616 dict_value->SetString("url", prerender_url_.spec()); |
| 614 base::TimeTicks current_time = base::TimeTicks::Now(); | 617 base::TimeTicks current_time = base::TimeTicks::Now(); |
| 615 base::TimeDelta duration = current_time - load_start_time_; | 618 base::TimeDelta duration = current_time - load_start_time_; |
| 616 dict_value->SetInteger("duration", duration.InSeconds()); | 619 dict_value->SetInteger("duration", duration.InSeconds()); |
| 617 return dict_value; | 620 return dict_value; |
| 618 } | 621 } |
| 619 | 622 |
| 620 } // namespace prerender | 623 } // namespace prerender |
| OLD | NEW |