Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Side by Side Diff: chrome/browser/download/download_manager_unittest.cc

Issue 7646025: Detect file system errors during downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed Clang problem by moving MockFileStream method bodies to a cc file. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | content/browser/download/base_file.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <string> 5 #include <string>
6 #include <set> 6 #include <set>
7 7
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/i18n/number_formatting.h" 9 #include "base/i18n/number_formatting.h"
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
(...skipping 12 matching lines...) Expand all
23 #include "chrome/test/base/testing_profile.h" 23 #include "chrome/test/base/testing_profile.h"
24 #include "content/browser/browser_thread.h" 24 #include "content/browser/browser_thread.h"
25 #include "content/browser/download/download_create_info.h" 25 #include "content/browser/download/download_create_info.h"
26 #include "content/browser/download/download_file.h" 26 #include "content/browser/download/download_file.h"
27 #include "content/browser/download/download_file_manager.h" 27 #include "content/browser/download/download_file_manager.h"
28 #include "content/browser/download/download_item.h" 28 #include "content/browser/download/download_item.h"
29 #include "content/browser/download/download_manager.h" 29 #include "content/browser/download/download_manager.h"
30 #include "content/browser/download/download_status_updater.h" 30 #include "content/browser/download/download_status_updater.h"
31 #include "content/browser/download/mock_download_manager.h" 31 #include "content/browser/download/mock_download_manager.h"
32 #include "grit/generated_resources.h" 32 #include "grit/generated_resources.h"
33 #include "net/base/io_buffer.h"
34 #include "net/base/mock_file_stream.h"
33 #include "testing/gmock/include/gmock/gmock.h" 35 #include "testing/gmock/include/gmock/gmock.h"
34 #include "testing/gmock_mutant.h" 36 #include "testing/gmock_mutant.h"
35 #include "testing/gtest/include/gtest/gtest.h" 37 #include "testing/gtest/include/gtest/gtest.h"
36 #include "ui/base/l10n/l10n_util.h" 38 #include "ui/base/l10n/l10n_util.h"
37 #include "ui/base/text/bytes_formatting.h" 39 #include "ui/base/text/bytes_formatting.h"
38 40
39 class DownloadManagerTest : public testing::Test { 41 class DownloadManagerTest : public testing::Test {
40 public: 42 public:
41 static const char* kTestData; 43 static const char* kTestData;
42 static const size_t kTestDataLen; 44 static const size_t kTestDataLen;
(...skipping 17 matching lines...) Expand all
60 download_manager_ = NULL; 62 download_manager_ = NULL;
61 download_manager_delegate_ = NULL; 63 download_manager_delegate_ = NULL;
62 profile_.reset(NULL); 64 profile_.reset(NULL);
63 message_loop_.RunAllPending(); 65 message_loop_.RunAllPending();
64 } 66 }
65 67
66 void AddDownloadToFileManager(int id, DownloadFile* download_file) { 68 void AddDownloadToFileManager(int id, DownloadFile* download_file) {
67 file_manager()->downloads_[id] = download_file; 69 file_manager()->downloads_[id] = download_file;
68 } 70 }
69 71
70 void OnAllDataSaved(int32 download_id, int64 size, const std::string& hash) { 72 void OnResponseCompleted(int32 download_id, int64 size,
71 download_manager_->OnAllDataSaved(download_id, size, hash); 73 const std::string& hash) {
74 download_manager_->OnResponseCompleted(download_id, size, hash);
72 } 75 }
73 76
74 void FileSelected(const FilePath& path, void* params) { 77 void FileSelected(const FilePath& path, void* params) {
75 download_manager_->FileSelected(path, params); 78 download_manager_->FileSelected(path, params);
76 } 79 }
77 80
78 void ContinueDownloadWithPath(DownloadItem* download, const FilePath& path) { 81 void ContinueDownloadWithPath(DownloadItem* download, const FilePath& path) {
79 download_manager_->ContinueDownloadWithPath(download, path); 82 download_manager_->ContinueDownloadWithPath(download, path);
80 } 83 }
81 84
85 void UpdateData(int32 id, const char* data, size_t length) {
86 // We are passing ownership of this buffer to the download file manager.
87 net::IOBuffer* io_buffer = new net::IOBuffer(length);
88 // We need |AddRef()| because we do a |Release()| in |UpdateDownload()|.
89 io_buffer->AddRef();
90 memcpy(io_buffer->data(), data, length);
91
92 {
93 base::AutoLock auto_lock(download_buffer_.lock);
94
95 download_buffer_.contents.push_back(
96 std::make_pair(io_buffer, length));
97 }
98
99 BrowserThread::PostTask(
100 BrowserThread::FILE, FROM_HERE,
101 NewRunnableMethod(file_manager_.get(),
102 &DownloadFileManager::UpdateDownload,
103 id,
104 &download_buffer_));
105
106 message_loop_.RunAllPending();
107 }
108
82 void OnDownloadError(int32 download_id, int64 size, int os_error) { 109 void OnDownloadError(int32 download_id, int64 size, int os_error) {
83 download_manager_->OnDownloadError(download_id, size, os_error); 110 download_manager_->OnDownloadError(download_id, size, os_error);
84 } 111 }
85 112
86 // Get the download item with ID |id|. 113 // Get the download item with ID |id|.
87 DownloadItem* GetActiveDownloadItem(int32 id) { 114 DownloadItem* GetActiveDownloadItem(int32 id) {
88 if (ContainsKey(download_manager_->active_downloads_, id)) 115 if (ContainsKey(download_manager_->active_downloads_, id))
89 return download_manager_->active_downloads_[id]; 116 return download_manager_->active_downloads_[id];
90 return NULL; 117 return NULL;
91 } 118 }
92 119
93 protected: 120 protected:
94 DownloadStatusUpdater download_status_updater_; 121 DownloadStatusUpdater download_status_updater_;
95 scoped_ptr<TestingProfile> profile_; 122 scoped_ptr<TestingProfile> profile_;
96 scoped_refptr<ChromeDownloadManagerDelegate> download_manager_delegate_; 123 scoped_refptr<ChromeDownloadManagerDelegate> download_manager_delegate_;
97 scoped_refptr<DownloadManager> download_manager_; 124 scoped_refptr<DownloadManager> download_manager_;
98 scoped_refptr<DownloadFileManager> file_manager_; 125 scoped_refptr<DownloadFileManager> file_manager_;
99 MessageLoopForUI message_loop_; 126 MessageLoopForUI message_loop_;
100 BrowserThread ui_thread_; 127 BrowserThread ui_thread_;
101 BrowserThread file_thread_; 128 BrowserThread file_thread_;
129 DownloadBuffer download_buffer_;
102 130
103 DownloadFileManager* file_manager() { 131 DownloadFileManager* file_manager() {
104 if (!file_manager_) { 132 if (!file_manager_) {
105 file_manager_ = new DownloadFileManager(NULL); 133 file_manager_ = new DownloadFileManager(NULL);
106 download_manager_->file_manager_ = file_manager_; 134 download_manager_->file_manager_ = file_manager_;
107 } 135 }
108 return file_manager_; 136 return file_manager_;
109 } 137 }
110 138
111 // Make sure download item |id| was set with correct safety state for 139 // Make sure download item |id| was set with correct safety state for
112 // given |is_dangerous_file| and |is_dangerous_url|. 140 // given |is_dangerous_file| and |is_dangerous_url|.
113 bool VerifySafetyState(bool is_dangerous_file, 141 bool VerifySafetyState(bool is_dangerous_file,
114 bool is_dangerous_url, 142 bool is_dangerous_url,
115 int id) { 143 int id) {
116 DownloadItem::SafetyState safety_state = 144 DownloadItem::SafetyState safety_state =
117 download_manager_->GetDownloadItem(id)->safety_state(); 145 download_manager_->GetDownloadItem(id)->safety_state();
118 return (is_dangerous_file || is_dangerous_url) ? 146 return (is_dangerous_file || is_dangerous_url) ?
119 safety_state != DownloadItem::SAFE : safety_state == DownloadItem::SAFE; 147 safety_state != DownloadItem::SAFE : safety_state == DownloadItem::SAFE;
120 } 148 }
121 149
122 DISALLOW_COPY_AND_ASSIGN(DownloadManagerTest); 150 DISALLOW_COPY_AND_ASSIGN(DownloadManagerTest);
123 }; 151 };
124 152
125 const char* DownloadManagerTest::kTestData = "a;sdlfalsdfjalsdkfjad"; 153 const char* DownloadManagerTest::kTestData = "a;sdlfalsdfjalsdkfjad";
126 const size_t DownloadManagerTest::kTestDataLen = 154 const size_t DownloadManagerTest::kTestDataLen =
127 strlen(DownloadManagerTest::kTestData); 155 strlen(DownloadManagerTest::kTestData);
128 156
157 // A DownloadFile that we can inject errors into. Uses MockFileStream.
158 // Note: This can't be in an anonymous namespace because it must be declared
159 // as a friend of |DownloadFile| in order to access its private members.
160 class DownloadFileWithMockStream : public DownloadFile {
161 public:
162 DownloadFileWithMockStream(DownloadCreateInfo* info,
163 DownloadManager* manager,
164 testing::MockFileStream* stream)
165 : DownloadFile(info, manager) {
166 DCHECK(file_stream_ == NULL);
167 file_stream_.reset(stream);
168 }
169 virtual ~DownloadFileWithMockStream() {
170 }
171
172 void SetForcedError(int error)
173 {
174 // |file_stream_| can only be set in the constructor and in
175 // CreateFileStream(), both of which insure that it is a |MockFileStream|.
176 testing::MockFileStream* mock_stream =
177 static_cast<testing::MockFileStream *>(file_stream_.get());
178 mock_stream->set_forced_error(error);
179 }
180
181 protected:
182 // This version creates a |MockFileStream| instead of a |FileStream|.
183 virtual void CreateFileStream() OVERRIDE;
184 };
185
186 void DownloadFileWithMockStream::CreateFileStream() {
Randy Smith (Not in Mondays) 2011/08/29 17:02:07 nit: I'd like to see the class written consistentl
ahendrickson 2011/08/29 17:51:38 Done.
187 file_stream_.reset(new testing::MockFileStream);
188 }
189
129 namespace { 190 namespace {
130 191
131 const struct { 192 const struct {
132 const char* url; 193 const char* url;
133 const char* mime_type; 194 const char* mime_type;
134 bool save_as; 195 bool save_as;
135 bool prompt_for_download; 196 bool prompt_for_download;
136 bool expected_save_as; 197 bool expected_save_as;
137 } kStartDownloadCases[] = { 198 } kStartDownloadCases[] = {
138 { "http://www.foo.com/dont-open.html", 199 { "http://www.foo.com/dont-open.html",
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 DownloadItem* download = GetActiveDownloadItem(i); 438 DownloadItem* download = GetActiveDownloadItem(i);
378 ASSERT_TRUE(download != NULL); 439 ASSERT_TRUE(download != NULL);
379 if (kDownloadRenameCases[i].is_dangerous_file) 440 if (kDownloadRenameCases[i].is_dangerous_file)
380 download->MarkFileDangerous(); 441 download->MarkFileDangerous();
381 if (kDownloadRenameCases[i].is_dangerous_url) 442 if (kDownloadRenameCases[i].is_dangerous_url)
382 download->MarkUrlDangerous(); 443 download->MarkUrlDangerous();
383 444
384 int32* id_ptr = new int32; 445 int32* id_ptr = new int32;
385 *id_ptr = i; // Deleted in FileSelected(). 446 *id_ptr = i; // Deleted in FileSelected().
386 if (kDownloadRenameCases[i].finish_before_rename) { 447 if (kDownloadRenameCases[i].finish_before_rename) {
387 OnAllDataSaved(i, 1024, std::string("fake_hash")); 448 OnResponseCompleted(i, 1024, std::string("fake_hash"));
388 message_loop_.RunAllPending(); 449 message_loop_.RunAllPending();
389 FileSelected(new_path, id_ptr); 450 FileSelected(new_path, id_ptr);
390 } else { 451 } else {
391 FileSelected(new_path, id_ptr); 452 FileSelected(new_path, id_ptr);
392 message_loop_.RunAllPending(); 453 message_loop_.RunAllPending();
393 OnAllDataSaved(i, 1024, std::string("fake_hash")); 454 OnResponseCompleted(i, 1024, std::string("fake_hash"));
394 } 455 }
395 456
396 message_loop_.RunAllPending(); 457 message_loop_.RunAllPending();
397 EXPECT_TRUE(VerifySafetyState(kDownloadRenameCases[i].is_dangerous_file, 458 EXPECT_TRUE(VerifySafetyState(kDownloadRenameCases[i].is_dangerous_file,
398 kDownloadRenameCases[i].is_dangerous_url, 459 kDownloadRenameCases[i].is_dangerous_url,
399 i)); 460 i));
400 } 461 }
401 } 462 }
402 463
403 TEST_F(DownloadManagerTest, DownloadInterruptTest) { 464 TEST_F(DownloadManagerTest, DownloadInterruptTest) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 EXPECT_FALSE(observer->hit_state(DownloadItem::CANCELLED)); 536 EXPECT_FALSE(observer->hit_state(DownloadItem::CANCELLED));
476 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING)); 537 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING));
477 EXPECT_TRUE(observer->was_updated()); 538 EXPECT_TRUE(observer->was_updated());
478 EXPECT_FALSE(observer->was_opened()); 539 EXPECT_FALSE(observer->was_opened());
479 EXPECT_FALSE(download->file_externally_removed()); 540 EXPECT_FALSE(download->file_externally_removed());
480 EXPECT_EQ(DownloadItem::INTERRUPTED, download->state()); 541 EXPECT_EQ(DownloadItem::INTERRUPTED, download->state());
481 EXPECT_EQ(download->received_bytes(), error_size); 542 EXPECT_EQ(download->received_bytes(), error_size);
482 EXPECT_EQ(download->total_bytes(), static_cast<int64>(kTestDataLen)); 543 EXPECT_EQ(download->total_bytes(), static_cast<int64>(kTestDataLen));
483 } 544 }
484 545
546 // Test the behavior of DownloadFileManager and DownloadManager in the event
547 // of a file error while writing the download to disk.
548 TEST_F(DownloadManagerTest, DownloadFileErrorTest) {
549 // Create a temporary file and a mock stream.
550 FilePath path;
551 ASSERT_TRUE(file_util::CreateTemporaryFile(&path));
552
553 // This file stream will be used, until the first rename occurs.
554 testing::MockFileStream* mock_stream = new testing::MockFileStream;
555 ASSERT_EQ(0, mock_stream->Open(
556 path,
557 base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE));
558
559 // Normally, the download system takes ownership of info, and is
560 // responsible for deleting it. In these unit tests, however, we
561 // don't call the function that deletes it, so we can use a stack variable.
562 DownloadCreateInfo info;
563 int32 id = 0;
564 info.download_id = id;
565 info.prompt_user_for_save_location = false;
566 info.url_chain.push_back(GURL());
567 info.total_bytes = static_cast<int64>(kTestDataLen * 3);
568 info.save_info.file_path = path;
569
570 // Create a download file that we can insert errors into.
571 DownloadFileWithMockStream* download_file(new DownloadFileWithMockStream(
572 &info, download_manager_, mock_stream));
573 AddDownloadToFileManager(id, download_file);
574
575 // |download_file| is owned by DownloadFileManager.
576 download_manager_->CreateDownloadItem(&info);
577
578 DownloadItem* download = GetActiveDownloadItem(0);
579 ASSERT_TRUE(download != NULL);
580 // This will keep track of what should be displayed on the shelf.
581 scoped_ptr<DownloadItemModel> download_item_model(
582 new DownloadItemModel(download));
583
584 EXPECT_EQ(DownloadItem::IN_PROGRESS, download->state());
585 scoped_ptr<ItemObserver> observer(new ItemObserver(download));
586
587 // Add some data before finalizing the file name.
588 UpdateData(id, kTestData, kTestDataLen);
589
590 // Finalize the file name.
591 ContinueDownloadWithPath(download, path);
592 message_loop_.RunAllPending();
593 EXPECT_TRUE(GetActiveDownloadItem(0) != NULL);
594
595 // Add more data.
596 UpdateData(id, kTestData, kTestDataLen);
597
598 // Add more data, but an error occurs.
599 download_file->SetForcedError(net::ERR_FAILED);
600 UpdateData(id, kTestData, kTestDataLen);
601
602 // Check the state. The download should have been interrupted.
603 EXPECT_TRUE(GetActiveDownloadItem(0) == NULL);
604 EXPECT_TRUE(observer->hit_state(DownloadItem::IN_PROGRESS));
605 EXPECT_TRUE(observer->hit_state(DownloadItem::INTERRUPTED));
606 EXPECT_FALSE(observer->hit_state(DownloadItem::COMPLETE));
607 EXPECT_FALSE(observer->hit_state(DownloadItem::CANCELLED));
608 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING));
609 EXPECT_TRUE(observer->was_updated());
610 EXPECT_FALSE(observer->was_opened());
611 EXPECT_FALSE(download->file_externally_removed());
612 EXPECT_EQ(DownloadItem::INTERRUPTED, download->state());
613
614 // Check the download shelf's information.
615 size_t error_size = kTestDataLen * 3;
616 ui::DataUnits amount_units = ui::GetByteDisplayUnits(kTestDataLen);
617 string16 simple_size =
618 ui::FormatBytesWithUnits(error_size, amount_units, false);
619 string16 simple_total = base::i18n::GetDisplayStringInLTRDirectionality(
620 ui::FormatBytesWithUnits(error_size, amount_units, true));
621 EXPECT_EQ(l10n_util::GetStringFUTF16(IDS_DOWNLOAD_STATUS_INTERRUPTED,
622 simple_size,
623 simple_total),
624 download_item_model->GetStatusText());
625
626 // Clean up.
627 download->Cancel(true);
628 message_loop_.RunAllPending();
629 }
630
485 TEST_F(DownloadManagerTest, DownloadCancelTest) { 631 TEST_F(DownloadManagerTest, DownloadCancelTest) {
486 using ::testing::_; 632 using ::testing::_;
487 using ::testing::CreateFunctor; 633 using ::testing::CreateFunctor;
488 using ::testing::Invoke; 634 using ::testing::Invoke;
489 using ::testing::Return; 635 using ::testing::Return;
490 636
491 // Normally, the download system takes ownership of info, and is 637 // Normally, the download system takes ownership of info, and is
492 // responsible for deleting it. In these unit tests, however, we 638 // responsible for deleting it. In these unit tests, however, we
493 // don't call the function that deletes it, so we do so ourselves. 639 // don't call the function that deletes it, so we do so ourselves.
494 scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo); 640 scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 // |download_file| is owned by DownloadFileManager. 748 // |download_file| is owned by DownloadFileManager.
603 AddDownloadToFileManager(info->download_id, download_file); 749 AddDownloadToFileManager(info->download_id, download_file);
604 750
605 ContinueDownloadWithPath(download, new_path); 751 ContinueDownloadWithPath(download, new_path);
606 message_loop_.RunAllPending(); 752 message_loop_.RunAllPending();
607 EXPECT_TRUE(GetActiveDownloadItem(0) != NULL); 753 EXPECT_TRUE(GetActiveDownloadItem(0) != NULL);
608 754
609 download_file->AppendDataToFile(kTestData, kTestDataLen); 755 download_file->AppendDataToFile(kTestData, kTestDataLen);
610 756
611 // Finish the download. 757 // Finish the download.
612 OnAllDataSaved(0, kTestDataLen, ""); 758 OnResponseCompleted(0, kTestDataLen, "");
613 message_loop_.RunAllPending(); 759 message_loop_.RunAllPending();
614 760
615 // Download is complete. 761 // Download is complete.
616 EXPECT_TRUE(GetActiveDownloadItem(0) == NULL); 762 EXPECT_TRUE(GetActiveDownloadItem(0) == NULL);
617 EXPECT_TRUE(observer->hit_state(DownloadItem::IN_PROGRESS)); 763 EXPECT_TRUE(observer->hit_state(DownloadItem::IN_PROGRESS));
618 EXPECT_FALSE(observer->hit_state(DownloadItem::CANCELLED)); 764 EXPECT_FALSE(observer->hit_state(DownloadItem::CANCELLED));
619 EXPECT_FALSE(observer->hit_state(DownloadItem::INTERRUPTED)); 765 EXPECT_FALSE(observer->hit_state(DownloadItem::INTERRUPTED));
620 EXPECT_TRUE(observer->hit_state(DownloadItem::COMPLETE)); 766 EXPECT_TRUE(observer->hit_state(DownloadItem::COMPLETE));
621 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING)); 767 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING));
622 EXPECT_TRUE(observer->was_updated()); 768 EXPECT_TRUE(observer->was_updated());
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 // |download_file| is owned by DownloadFileManager. 824 // |download_file| is owned by DownloadFileManager.
679 AddDownloadToFileManager(info->download_id, download_file); 825 AddDownloadToFileManager(info->download_id, download_file);
680 826
681 ContinueDownloadWithPath(download, new_path); 827 ContinueDownloadWithPath(download, new_path);
682 message_loop_.RunAllPending(); 828 message_loop_.RunAllPending();
683 EXPECT_TRUE(GetActiveDownloadItem(0) != NULL); 829 EXPECT_TRUE(GetActiveDownloadItem(0) != NULL);
684 830
685 download_file->AppendDataToFile(kTestData, kTestDataLen); 831 download_file->AppendDataToFile(kTestData, kTestDataLen);
686 832
687 // Finish the download. 833 // Finish the download.
688 OnAllDataSaved(0, kTestDataLen, ""); 834 OnResponseCompleted(0, kTestDataLen, "");
689 message_loop_.RunAllPending(); 835 message_loop_.RunAllPending();
690 836
691 // Download is complete. 837 // Download is complete.
692 EXPECT_TRUE(GetActiveDownloadItem(0) == NULL); 838 EXPECT_TRUE(GetActiveDownloadItem(0) == NULL);
693 EXPECT_TRUE(observer->hit_state(DownloadItem::IN_PROGRESS)); 839 EXPECT_TRUE(observer->hit_state(DownloadItem::IN_PROGRESS));
694 EXPECT_FALSE(observer->hit_state(DownloadItem::CANCELLED)); 840 EXPECT_FALSE(observer->hit_state(DownloadItem::CANCELLED));
695 EXPECT_FALSE(observer->hit_state(DownloadItem::INTERRUPTED)); 841 EXPECT_FALSE(observer->hit_state(DownloadItem::INTERRUPTED));
696 EXPECT_TRUE(observer->hit_state(DownloadItem::COMPLETE)); 842 EXPECT_TRUE(observer->hit_state(DownloadItem::COMPLETE));
697 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING)); 843 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING));
698 EXPECT_TRUE(observer->was_updated()); 844 EXPECT_TRUE(observer->was_updated());
(...skipping 18 matching lines...) Expand all
717 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING)); 863 EXPECT_FALSE(observer->hit_state(DownloadItem::REMOVING));
718 EXPECT_TRUE(observer->was_updated()); 864 EXPECT_TRUE(observer->was_updated());
719 EXPECT_FALSE(observer->was_opened()); 865 EXPECT_FALSE(observer->was_opened());
720 EXPECT_TRUE(download->file_externally_removed()); 866 EXPECT_TRUE(download->file_externally_removed());
721 EXPECT_EQ(DownloadItem::COMPLETE, download->state()); 867 EXPECT_EQ(DownloadItem::COMPLETE, download->state());
722 EXPECT_EQ(download_item_model->GetStatusText(), 868 EXPECT_EQ(download_item_model->GetStatusText(),
723 l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_REMOVED)); 869 l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_REMOVED));
724 870
725 EXPECT_FALSE(file_util::PathExists(new_path)); 871 EXPECT_FALSE(file_util::PathExists(new_path));
726 } 872 }
OLDNEW
« no previous file with comments | « no previous file | content/browser/download/base_file.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698