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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 | 81 |
82 // TabContentsDelegate implementation: | 82 // TabContentsDelegate implementation: |
83 virtual bool ShouldAddNavigationToHistory( | 83 virtual bool ShouldAddNavigationToHistory( |
84 const history::HistoryAddPageArgs& add_page_args, | 84 const history::HistoryAddPageArgs& add_page_args, |
85 NavigationType::Type navigation_type) OVERRIDE { | 85 NavigationType::Type navigation_type) OVERRIDE { |
86 add_page_vector_.push_back( | 86 add_page_vector_.push_back( |
87 scoped_refptr<history::HistoryAddPageArgs>(add_page_args.Clone())); | 87 scoped_refptr<history::HistoryAddPageArgs>(add_page_args.Clone())); |
88 return false; | 88 return false; |
89 } | 89 } |
90 | 90 |
91 bool CanDownload(TabContents* source, int request_id) OVERRIDE { | 91 virtual bool CanDownload(TabContents* source, int request_id) OVERRIDE { |
92 prerender_contents_->Destroy(FINAL_STATUS_DOWNLOAD); | 92 prerender_contents_->Destroy(FINAL_STATUS_DOWNLOAD); |
93 // Cancel the download. | 93 // Cancel the download. |
94 return false; | 94 return false; |
95 } | 95 } |
96 | 96 |
97 void OnStartDownload(TabContents* source, DownloadItem* download) OVERRIDE { | 97 virtual void OnStartDownload(TabContents* source, |
| 98 DownloadItem* download) OVERRIDE { |
98 // Prerendered pages should never be able to download files. | 99 // Prerendered pages should never be able to download files. |
99 NOTREACHED(); | 100 NOTREACHED(); |
100 } | 101 } |
101 | 102 |
| 103 virtual bool OnGoToEntryOffset(int offset) OVERRIDE { |
| 104 // This isn't allowed because the history merge operation |
| 105 // does not work if there are renderer issued challenges. |
| 106 // TODO(cbentzel): Cancel in this case? May not need to do |
| 107 // since render-issued offset navigations are not guaranteed, |
| 108 // but indicates that the page cares about the history. |
| 109 return false; |
| 110 } |
| 111 |
102 // Commits the History of Pages to the given TabContents. | 112 // Commits the History of Pages to the given TabContents. |
103 void CommitHistory(TabContentsWrapper* tab) { | 113 void CommitHistory(TabContentsWrapper* tab) { |
104 for (size_t i = 0; i < add_page_vector_.size(); ++i) | 114 for (size_t i = 0; i < add_page_vector_.size(); ++i) |
105 tab->history_tab_helper()->UpdateHistoryForNavigation( | 115 tab->history_tab_helper()->UpdateHistoryForNavigation( |
106 add_page_vector_[i].get()); | 116 add_page_vector_[i].get()); |
107 } | 117 } |
108 | 118 |
109 private: | 119 private: |
110 typedef std::vector<scoped_refptr<history::HistoryAddPageArgs> > | 120 typedef std::vector<scoped_refptr<history::HistoryAddPageArgs> > |
111 AddPageVector; | 121 AddPageVector; |
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 if (!prerender_contents_.get()) | 605 if (!prerender_contents_.get()) |
596 return NULL; | 606 return NULL; |
597 DictionaryValue* dict_value = new DictionaryValue(); | 607 DictionaryValue* dict_value = new DictionaryValue(); |
598 dict_value->SetString("url", prerender_url_.spec()); | 608 dict_value->SetString("url", prerender_url_.spec()); |
599 base::TimeTicks current_time = base::TimeTicks::Now(); | 609 base::TimeTicks current_time = base::TimeTicks::Now(); |
600 base::TimeDelta duration = current_time - load_start_time_; | 610 base::TimeDelta duration = current_time - load_start_time_; |
601 dict_value->SetInteger("duration", duration.InSeconds()); | 611 dict_value->SetInteger("duration", duration.InSeconds()); |
602 return dict_value; | 612 return dict_value; |
603 } | 613 } |
604 | 614 |
| 615 bool PrerenderContents::IsCrossSiteNavigationPending() const { |
| 616 if (!prerender_contents_.get() || !prerender_contents_->tab_contents()) |
| 617 return false; |
| 618 const TabContents* tab_contents = prerender_contents_->tab_contents(); |
| 619 return (tab_contents->GetSiteInstance() != |
| 620 tab_contents->GetPendingSiteInstance()); |
| 621 } |
| 622 |
| 623 |
605 } // namespace prerender | 624 } // namespace prerender |
OLD | NEW |