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 "base/auto_reset.h" | 5 #include "base/auto_reset.h" |
6 #include "base/files/scoped_temp_dir.h" | 6 #include "base/files/scoped_temp_dir.h" |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "base/values.h" | 9 #include "base/values.h" |
10 #include "chrome/browser/history/download_row.h" | 10 #include "chrome/browser/history/download_row.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 | 47 |
48 // A |DownloadsDOMHandler| that doesn't use a real WebUI object, but is real in | 48 // A |DownloadsDOMHandler| that doesn't use a real WebUI object, but is real in |
49 // all other respects. | 49 // all other respects. |
50 class MockDownloadsDOMHandler : public DownloadsDOMHandler { | 50 class MockDownloadsDOMHandler : public DownloadsDOMHandler { |
51 public: | 51 public: |
52 explicit MockDownloadsDOMHandler(content::DownloadManager* dlm) | 52 explicit MockDownloadsDOMHandler(content::DownloadManager* dlm) |
53 : DownloadsDOMHandler(dlm), | 53 : DownloadsDOMHandler(dlm), |
54 waiting_list_(false), | 54 waiting_list_(false), |
55 waiting_updated_(false) { | 55 waiting_updated_(false) { |
56 } | 56 } |
57 virtual ~MockDownloadsDOMHandler() {} | 57 ~MockDownloadsDOMHandler() override {} |
58 | 58 |
59 base::ListValue* downloads_list() { return downloads_list_.get(); } | 59 base::ListValue* downloads_list() { return downloads_list_.get(); } |
60 base::ListValue* download_updated() { return download_updated_.get(); } | 60 base::ListValue* download_updated() { return download_updated_.get(); } |
61 | 61 |
62 void WaitForDownloadsList() { | 62 void WaitForDownloadsList() { |
63 if (downloads_list_.get()) | 63 if (downloads_list_.get()) |
64 return; | 64 return; |
65 base::AutoReset<bool> reset_waiting(&waiting_list_, true); | 65 base::AutoReset<bool> reset_waiting(&waiting_list_, true); |
66 content::RunMessageLoop(); | 66 content::RunMessageLoop(); |
67 } | 67 } |
68 | 68 |
69 void WaitForDownloadUpdated() { | 69 void WaitForDownloadUpdated() { |
70 if (download_updated_.get()) | 70 if (download_updated_.get()) |
71 return; | 71 return; |
72 base::AutoReset<bool> reset_waiting(&waiting_updated_, true); | 72 base::AutoReset<bool> reset_waiting(&waiting_updated_, true); |
73 content::RunMessageLoop(); | 73 content::RunMessageLoop(); |
74 } | 74 } |
75 | 75 |
76 void ForceSendCurrentDownloads() { | 76 void ForceSendCurrentDownloads() { |
77 ScheduleSendCurrentDownloads(); | 77 ScheduleSendCurrentDownloads(); |
78 } | 78 } |
79 | 79 |
80 void reset_downloads_list() { downloads_list_.reset(); } | 80 void reset_downloads_list() { downloads_list_.reset(); } |
81 void reset_download_updated() { download_updated_.reset(); } | 81 void reset_download_updated() { download_updated_.reset(); } |
82 | 82 |
83 protected: | 83 protected: |
84 virtual content::WebContents* GetWebUIWebContents() override { | 84 content::WebContents* GetWebUIWebContents() override { return NULL; } |
85 return NULL; | |
86 } | |
87 | 85 |
88 virtual void CallDownloadsList(const base::ListValue& downloads) override { | 86 void CallDownloadsList(const base::ListValue& downloads) override { |
89 downloads_list_.reset(downloads.DeepCopy()); | 87 downloads_list_.reset(downloads.DeepCopy()); |
90 if (waiting_list_) { | 88 if (waiting_list_) { |
91 content::BrowserThread::PostTask(content::BrowserThread::UI, | 89 content::BrowserThread::PostTask(content::BrowserThread::UI, |
92 FROM_HERE, | 90 FROM_HERE, |
93 base::MessageLoop::QuitClosure()); | 91 base::MessageLoop::QuitClosure()); |
94 } | 92 } |
95 } | 93 } |
96 | 94 |
97 virtual void CallDownloadUpdated(const base::ListValue& download) override { | 95 void CallDownloadUpdated(const base::ListValue& download) override { |
98 download_updated_.reset(download.DeepCopy()); | 96 download_updated_.reset(download.DeepCopy()); |
99 if (waiting_updated_) { | 97 if (waiting_updated_) { |
100 content::BrowserThread::PostTask(content::BrowserThread::UI, | 98 content::BrowserThread::PostTask(content::BrowserThread::UI, |
101 FROM_HERE, | 99 FROM_HERE, |
102 base::MessageLoop::QuitClosure()); | 100 base::MessageLoop::QuitClosure()); |
103 } | 101 } |
104 } | 102 } |
105 | 103 |
106 private: | 104 private: |
107 scoped_ptr<base::ListValue> downloads_list_; | 105 scoped_ptr<base::ListValue> downloads_list_; |
108 scoped_ptr<base::ListValue> download_updated_; | 106 scoped_ptr<base::ListValue> download_updated_; |
109 bool waiting_list_; | 107 bool waiting_list_; |
110 bool waiting_updated_; | 108 bool waiting_updated_; |
111 | 109 |
112 DISALLOW_COPY_AND_ASSIGN(MockDownloadsDOMHandler); | 110 DISALLOW_COPY_AND_ASSIGN(MockDownloadsDOMHandler); |
113 }; | 111 }; |
114 | 112 |
115 } // namespace | 113 } // namespace |
116 | 114 |
117 class DownloadsDOMHandlerTest : public InProcessBrowserTest { | 115 class DownloadsDOMHandlerTest : public InProcessBrowserTest { |
118 public: | 116 public: |
119 DownloadsDOMHandlerTest() {} | 117 DownloadsDOMHandlerTest() {} |
120 | 118 |
121 virtual ~DownloadsDOMHandlerTest() {} | 119 virtual ~DownloadsDOMHandlerTest() {} |
122 | 120 |
123 virtual void SetUpOnMainThread() override { | 121 void SetUpOnMainThread() override { |
124 mock_handler_.reset(new MockDownloadsDOMHandler(download_manager())); | 122 mock_handler_.reset(new MockDownloadsDOMHandler(download_manager())); |
125 CHECK(downloads_directory_.CreateUniqueTempDir()); | 123 CHECK(downloads_directory_.CreateUniqueTempDir()); |
126 browser()->profile()->GetPrefs()->SetFilePath( | 124 browser()->profile()->GetPrefs()->SetFilePath( |
127 prefs::kDownloadDefaultDirectory, | 125 prefs::kDownloadDefaultDirectory, |
128 downloads_directory_.path()); | 126 downloads_directory_.path()); |
129 CHECK(test_server()->Start()); | 127 CHECK(test_server()->Start()); |
130 } | 128 } |
131 | 129 |
132 content::DownloadManager* download_manager() { | 130 content::DownloadManager* download_manager() { |
133 return content::BrowserContext::GetDownloadManager(browser()->profile()); | 131 return content::BrowserContext::GetDownloadManager(browser()->profile()); |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 // TODO(benjhayden): Test incognito, both downloads_list() and that on-record | 248 // TODO(benjhayden): Test incognito, both downloads_list() and that on-record |
251 // calls can't access off-record items. | 249 // calls can't access off-record items. |
252 | 250 |
253 // TODO(benjhayden): Test that bad download ids incoming from the javascript are | 251 // TODO(benjhayden): Test that bad download ids incoming from the javascript are |
254 // dropped on the floor. | 252 // dropped on the floor. |
255 | 253 |
256 // TODO(benjhayden): Test that IsTemporary() downloads are not shown. | 254 // TODO(benjhayden): Test that IsTemporary() downloads are not shown. |
257 | 255 |
258 // TODO(benjhayden): Test that RemoveObserver is called on all download items, | 256 // TODO(benjhayden): Test that RemoveObserver is called on all download items, |
259 // including items that crossed IsTemporary() and back. | 257 // including items that crossed IsTemporary() and back. |
OLD | NEW |