| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/dom_distiller/core/distiller.h" | 5 #include "components/dom_distiller/core/distiller.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 scoped_ptr<DistilledPageInfo> distilled_page, | 134 scoped_ptr<DistilledPageInfo> distilled_page, |
| 135 bool distillation_successful) { | 135 bool distillation_successful) { |
| 136 DCHECK(distilled_page.get()); | 136 DCHECK(distilled_page.get()); |
| 137 DCHECK(started_pages_index_.find(page_num) != started_pages_index_.end()); | 137 DCHECK(started_pages_index_.find(page_num) != started_pages_index_.end()); |
| 138 if (distillation_successful) { | 138 if (distillation_successful) { |
| 139 DistilledPageData* page_data = | 139 DistilledPageData* page_data = |
| 140 GetPageAtIndex(started_pages_index_[page_num]); | 140 GetPageAtIndex(started_pages_index_[page_num]); |
| 141 page_data->distilled_page_proto = | 141 page_data->distilled_page_proto = |
| 142 new base::RefCountedData<DistilledPageProto>(); | 142 new base::RefCountedData<DistilledPageProto>(); |
| 143 page_data->page_num = page_num; | 143 page_data->page_num = page_num; |
| 144 page_data->title = distilled_page->title; | 144 page_data->distilled_page_proto->data.set_title(distilled_page->title); |
| 145 | |
| 146 page_data->distilled_page_proto->data.set_url(page_url.spec()); | 145 page_data->distilled_page_proto->data.set_url(page_url.spec()); |
| 147 page_data->distilled_page_proto->data.set_html(distilled_page->html); | 146 page_data->distilled_page_proto->data.set_html(distilled_page->html); |
| 148 | 147 |
| 149 GURL next_page_url(distilled_page->next_page_url); | 148 GURL next_page_url(distilled_page->next_page_url); |
| 150 if (next_page_url.is_valid()) { | 149 if (next_page_url.is_valid()) { |
| 151 // The pages should be in same origin. | 150 // The pages should be in same origin. |
| 152 DCHECK_EQ(next_page_url.GetOrigin(), page_url.GetOrigin()); | 151 DCHECK_EQ(next_page_url.GetOrigin(), page_url.GetOrigin()); |
| 153 AddToDistillationQueue(page_num + 1, next_page_url); | 152 AddToDistillationQueue(page_num + 1, next_page_url); |
| 154 } | 153 } |
| 155 | 154 |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 bool first_page = true; | 259 bool first_page = true; |
| 261 scoped_ptr<DistilledArticleProto> article_proto( | 260 scoped_ptr<DistilledArticleProto> article_proto( |
| 262 new DistilledArticleProto()); | 261 new DistilledArticleProto()); |
| 263 // Stitch the pages back into the article. | 262 // Stitch the pages back into the article. |
| 264 for (std::map<int, size_t>::iterator it = finished_pages_index_.begin(); | 263 for (std::map<int, size_t>::iterator it = finished_pages_index_.begin(); |
| 265 it != finished_pages_index_.end();) { | 264 it != finished_pages_index_.end();) { |
| 266 DistilledPageData* page_data = GetPageAtIndex(it->second); | 265 DistilledPageData* page_data = GetPageAtIndex(it->second); |
| 267 *(article_proto->add_pages()) = page_data->distilled_page_proto->data; | 266 *(article_proto->add_pages()) = page_data->distilled_page_proto->data; |
| 268 | 267 |
| 269 if (first_page) { | 268 if (first_page) { |
| 270 article_proto->set_title(page_data->title); | 269 article_proto->set_title(page_data->distilled_page_proto->data.title()); |
| 271 first_page = false; | 270 first_page = false; |
| 272 } | 271 } |
| 273 | 272 |
| 274 finished_pages_index_.erase(it++); | 273 finished_pages_index_.erase(it++); |
| 275 } | 274 } |
| 276 | 275 |
| 277 pages_.clear(); | 276 pages_.clear(); |
| 278 DCHECK_LE(static_cast<size_t>(article_proto->pages_size()), | 277 DCHECK_LE(static_cast<size_t>(article_proto->pages_size()), |
| 279 max_pages_in_article_); | 278 max_pages_in_article_); |
| 280 | 279 |
| 281 DCHECK(pages_.empty()); | 280 DCHECK(pages_.empty()); |
| 282 DCHECK(finished_pages_index_.empty()); | 281 DCHECK(finished_pages_index_.empty()); |
| 283 | 282 |
| 284 base::AutoReset<bool> dont_delete_this_in_callback(&destruction_allowed_, | 283 base::AutoReset<bool> dont_delete_this_in_callback(&destruction_allowed_, |
| 285 false); | 284 false); |
| 286 finished_cb_.Run(article_proto.Pass()); | 285 finished_cb_.Run(article_proto.Pass()); |
| 287 finished_cb_.Reset(); | 286 finished_cb_.Reset(); |
| 288 } | 287 } |
| 289 } | 288 } |
| 290 | 289 |
| 291 } // namespace dom_distiller | 290 } // namespace dom_distiller |
| OLD | NEW |