| 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 "content/browser/download/save_package.h" | 5 #include "content/browser/download/save_package.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 Cancel(true); | 185 Cancel(true); |
| 186 } | 186 } |
| 187 | 187 |
| 188 // We should no longer be observing the DownloadItem at this point. | 188 // We should no longer be observing the DownloadItem at this point. |
| 189 CHECK(!download_); | 189 CHECK(!download_); |
| 190 | 190 |
| 191 DCHECK_EQ(all_save_items_count_, waiting_item_queue_.size() + | 191 DCHECK_EQ(all_save_items_count_, waiting_item_queue_.size() + |
| 192 completed_count() + in_process_count()); | 192 completed_count() + in_process_count()); |
| 193 | 193 |
| 194 // Free all SaveItems. | 194 // Free all SaveItems. |
| 195 STLDeleteElements(&waiting_item_queue_); | 195 base::STLDeleteElements(&waiting_item_queue_); |
| 196 STLDeleteValues(&in_progress_items_); | 196 base::STLDeleteValues(&in_progress_items_); |
| 197 STLDeleteValues(&saved_success_items_); | 197 base::STLDeleteValues(&saved_success_items_); |
| 198 STLDeleteValues(&saved_failed_items_); | 198 base::STLDeleteValues(&saved_failed_items_); |
| 199 // Clear containers that contain (now dangling/invalid) pointers to the | 199 // Clear containers that contain (now dangling/invalid) pointers to the |
| 200 // save items freed above. This is not strictly required (as the containers | 200 // save items freed above. This is not strictly required (as the containers |
| 201 // will be destructed soon by ~SavePackage), but seems like good code hygiene. | 201 // will be destructed soon by ~SavePackage), but seems like good code hygiene. |
| 202 frame_tree_node_id_to_contained_save_items_.clear(); | 202 frame_tree_node_id_to_contained_save_items_.clear(); |
| 203 frame_tree_node_id_to_save_item_.clear(); | 203 frame_tree_node_id_to_save_item_.clear(); |
| 204 url_to_save_item_.clear(); | 204 url_to_save_item_.clear(); |
| 205 | 205 |
| 206 file_manager_ = nullptr; | 206 file_manager_ = nullptr; |
| 207 } | 207 } |
| 208 | 208 |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 | 566 |
| 567 void SavePackage::PutInProgressItemToSavedMap(SaveItem* save_item) { | 567 void SavePackage::PutInProgressItemToSavedMap(SaveItem* save_item) { |
| 568 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 568 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 569 SaveItemIdMap::iterator it = in_progress_items_.find(save_item->id()); | 569 SaveItemIdMap::iterator it = in_progress_items_.find(save_item->id()); |
| 570 DCHECK(it != in_progress_items_.end()); | 570 DCHECK(it != in_progress_items_.end()); |
| 571 DCHECK_EQ(save_item, it->second); | 571 DCHECK_EQ(save_item, it->second); |
| 572 in_progress_items_.erase(it); | 572 in_progress_items_.erase(it); |
| 573 | 573 |
| 574 SaveItemIdMap& map = save_item->success() ? | 574 SaveItemIdMap& map = save_item->success() ? |
| 575 saved_success_items_ : saved_failed_items_; | 575 saved_success_items_ : saved_failed_items_; |
| 576 DCHECK(!ContainsKey(map, save_item->id())); | 576 DCHECK(!base::ContainsKey(map, save_item->id())); |
| 577 map[save_item->id()] = save_item; | 577 map[save_item->id()] = save_item; |
| 578 } | 578 } |
| 579 | 579 |
| 580 // Called for updating saving state. | 580 // Called for updating saving state. |
| 581 bool SavePackage::UpdateSaveProgress(SaveItemId save_item_id, | 581 bool SavePackage::UpdateSaveProgress(SaveItemId save_item_id, |
| 582 int64_t size, | 582 int64_t size, |
| 583 bool write_success) { | 583 bool write_success) { |
| 584 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 584 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 585 // Because we might have canceled this saving job before, | 585 // Because we might have canceled this saving job before, |
| 586 // so we might not find corresponding SaveItem. | 586 // so we might not find corresponding SaveItem. |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 776 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 776 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 777 DCHECK(web_contents()); | 777 DCHECK(web_contents()); |
| 778 DCHECK(!waiting_item_queue_.empty()); | 778 DCHECK(!waiting_item_queue_.empty()); |
| 779 | 779 |
| 780 do { | 780 do { |
| 781 // Pop SaveItem from waiting list. | 781 // Pop SaveItem from waiting list. |
| 782 SaveItem* save_item = waiting_item_queue_.front(); | 782 SaveItem* save_item = waiting_item_queue_.front(); |
| 783 waiting_item_queue_.pop_front(); | 783 waiting_item_queue_.pop_front(); |
| 784 | 784 |
| 785 // Add the item to |in_progress_items_|. | 785 // Add the item to |in_progress_items_|. |
| 786 DCHECK(!ContainsKey(in_progress_items_, save_item->id())); | 786 DCHECK(!base::ContainsKey(in_progress_items_, save_item->id())); |
| 787 in_progress_items_[save_item->id()] = save_item; | 787 in_progress_items_[save_item->id()] = save_item; |
| 788 save_item->Start(); | 788 save_item->Start(); |
| 789 | 789 |
| 790 // Find the frame responsible for making the network request below - it will | 790 // Find the frame responsible for making the network request below - it will |
| 791 // be used in security checks made later by ResourceDispatcherHostImpl. | 791 // be used in security checks made later by ResourceDispatcherHostImpl. |
| 792 int requester_frame_tree_node_id = | 792 int requester_frame_tree_node_id = |
| 793 save_item->save_source() == SaveFileCreateInfo::SAVE_FILE_FROM_NET | 793 save_item->save_source() == SaveFileCreateInfo::SAVE_FILE_FROM_NET |
| 794 ? save_item->container_frame_tree_node_id() | 794 ? save_item->container_frame_tree_node_id() |
| 795 : save_item->frame_tree_node_id(); | 795 : save_item->frame_tree_node_id(); |
| 796 DCHECK_NE(FrameTreeNode::kFrameTreeNodeInvalidId, | 796 DCHECK_NE(FrameTreeNode::kFrameTreeNodeInvalidId, |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1021 const SaveItem* save_item = it->second; | 1021 const SaveItem* save_item = it->second; |
| 1022 DCHECK_EQ(SaveFileCreateInfo::SAVE_FILE_FROM_DOM, save_item->save_source()); | 1022 DCHECK_EQ(SaveFileCreateInfo::SAVE_FILE_FROM_DOM, save_item->save_source()); |
| 1023 if (save_item->state() != SaveItem::IN_PROGRESS) { | 1023 if (save_item->state() != SaveItem::IN_PROGRESS) { |
| 1024 for (const auto& saved_it : saved_success_items_) { | 1024 for (const auto& saved_it : saved_success_items_) { |
| 1025 if (saved_it.second->url() == save_item->url()) { | 1025 if (saved_it.second->url() == save_item->url()) { |
| 1026 wrote_to_completed_file_ = true; | 1026 wrote_to_completed_file_ = true; |
| 1027 break; | 1027 break; |
| 1028 } | 1028 } |
| 1029 } | 1029 } |
| 1030 | 1030 |
| 1031 if (ContainsKey(saved_failed_items_, save_item->id())) | 1031 if (base::ContainsKey(saved_failed_items_, save_item->id())) |
| 1032 wrote_to_failed_file_ = true; | 1032 wrote_to_failed_file_ = true; |
| 1033 | 1033 |
| 1034 return; | 1034 return; |
| 1035 } | 1035 } |
| 1036 | 1036 |
| 1037 if (!data.empty()) { | 1037 if (!data.empty()) { |
| 1038 // Prepare buffer for saving HTML data. | 1038 // Prepare buffer for saving HTML data. |
| 1039 scoped_refptr<net::IOBuffer> new_data(new net::IOBuffer(data.size())); | 1039 scoped_refptr<net::IOBuffer> new_data(new net::IOBuffer(data.size())); |
| 1040 memcpy(new_data->data(), data.data(), data.size()); | 1040 memcpy(new_data->data(), data.data(), data.size()); |
| 1041 | 1041 |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1479 } | 1479 } |
| 1480 | 1480 |
| 1481 void SavePackage::FinalizeDownloadEntry() { | 1481 void SavePackage::FinalizeDownloadEntry() { |
| 1482 DCHECK(download_); | 1482 DCHECK(download_); |
| 1483 | 1483 |
| 1484 download_manager_->OnSavePackageSuccessfullyFinished(download_); | 1484 download_manager_->OnSavePackageSuccessfullyFinished(download_); |
| 1485 RemoveObservers(); | 1485 RemoveObservers(); |
| 1486 } | 1486 } |
| 1487 | 1487 |
| 1488 } // namespace content | 1488 } // namespace content |
| OLD | NEW |