OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 import pyauto_functional | |
7 import pyauto | |
8 | |
9 import chromeos.file_browser | |
10 import test_utils | |
11 | |
12 | |
13 class ChromeosFileBrowserTest(pyauto.PyUITest): | |
14 """Tests for ChromeOS File Browser (full page and dialog).""" | |
15 | |
16 def _GetFullPageFileBrowser(self, tab_index=0, windex=0): | |
17 """Display the full page file browser in the current tab. | |
18 | |
19 Returns: | |
20 ChromeosFileBrowser object. | |
21 """ | |
22 self.NavigateToURL('chrome://files') | |
23 executor = pyauto.PyUITest.JavascriptExecutorInTab(self, tab_index, windex) | |
24 file_browser = chromeos.file_browser.FileBrowser(self, executor) | |
25 if file_browser.WaitUntilInitialized(): | |
26 return file_browser | |
27 else: | |
28 return None | |
29 | |
30 def _GetSaveAsDialogFileBrowser(self): | |
31 """Display the save-as file browser dialog. | |
32 | |
33 The current tab should not be 'about:blank'. | |
34 | |
35 Returns: | |
36 ChromeosFileBrowser object. | |
37 """ | |
38 self.ApplyAccelerator(pyauto.IDC_SAVE_PAGE) | |
39 dialog = self.WaitUntilExtensionViewLoaded(view_type='EXTENSION_DIALOG') | |
40 self.assertTrue( | |
41 dialog, | |
42 msg='Could not find a loaded "save-as" file browser' | |
43 'dialog (views = %s).' % self.GetBrowserInfo()['extension_views']) | |
44 executor = \ | |
45 pyauto.PyUITest.JavascriptExecutorInRenderView(self, dialog) | |
46 file_browser = chromeos.file_browser.FileBrowser(self, executor) | |
47 if file_browser.WaitUntilInitialized(): | |
48 return file_browser | |
49 else: | |
50 return None | |
51 | |
52 def _GetOpenDialogFileBrowser(self): | |
53 """Display the open file browser dialog. | |
54 | |
55 Returns: | |
56 ChromeosFileBrowser object. | |
57 """ | |
58 self.ApplyAccelerator(pyauto.IDC_OPEN_FILE) | |
59 dialog = self.WaitUntilExtensionViewLoaded(view_type='EXTENSION_DIALOG') | |
60 self.assertTrue( | |
61 dialog, | |
62 msg='Could not find a loaded "open" file browser dialog: views = %s.' % | |
63 self.GetBrowserInfo()['extension_views']) | |
64 executor = \ | |
65 pyauto.PyUITest.JavascriptExecutorInRenderView(self, dialog) | |
66 file_browser = chromeos.file_browser.FileBrowser(self, executor) | |
67 if file_browser.WaitUntilInitialized(): | |
68 return file_browser | |
69 else: | |
70 return None | |
71 | |
72 def testOpenMediaFiles(self): | |
73 """Test we can open media files from the file browser dialog.""" | |
74 media_files = ['bear.mp4', 'bear.ogv', 'bear_pcm.wav', 'bear.webm'] | |
75 private_media_files = ['emerge.m4a', 'sample.mp3', 'sample.m4v', | |
76 'sample.ogg'] | |
77 # TODO: .avi, .wmv are not yet (fully) supported on ChromeOS. | |
78 # .mov and .3gp only work in the Media Player. Once these format are | |
79 # supported on ChromeOS, include them in the test. | |
80 for fname in media_files: | |
81 test_utils.CopyFileFromContentDataDirToDownloadDir(self, | |
82 'media/' + fname) | |
83 for fname in private_media_files: | |
84 test_utils.CopyFileFromDataDirToDownloadDir(self, 'pyauto_private/media/'
+\ | |
85 fname) | |
86 for fname in media_files + private_media_files: | |
87 file_browser = self._GetOpenDialogFileBrowser() | |
88 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
89 if file_browser.CurrentDirectory() != '/Downloads': | |
90 file_browser.ChangeDirectory('/Downloads/') | |
91 self.assertTrue(file_browser.Select(fname), | |
92 msg='"%s" does not exist.' % fname) | |
93 dialog = self.WaitUntilExtensionViewLoaded(view_type='EXTENSION_DIALOG') | |
94 file_browser.Open() | |
95 self.assertTrue(self.WaitUntilExtensionViewClosed(dialog), | |
96 msg='File browser dialog was not closed.') | |
97 self.assertFalse(self.IsDownloadShelfVisible(), | |
98 msg='Download shelf is visible. ' + | |
99 'Media format not recognized for %s.' % fname) | |
100 | |
101 def testSavePage(self): | |
102 """Test we can save the current page using the file browser dialog.""" | |
103 self.NavigateToURL('chrome://version') | |
104 file_browser = self._GetSaveAsDialogFileBrowser() | |
105 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
106 dialog = self.WaitUntilExtensionViewLoaded(view_type='EXTENSION_DIALOG') | |
107 file_browser.Save('apple.html') | |
108 self.assertTrue(self.WaitUntilExtensionViewClosed(dialog)) | |
109 file_browser = self._GetOpenDialogFileBrowser() | |
110 self.assertTrue(file_browser.Select('apple.html')) | |
111 | |
112 def testSelectMultipleFoldersInFullPage(self): | |
113 """Test we can select multiple folders in the full page file browser.""" | |
114 file_browser = self._GetFullPageFileBrowser() | |
115 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
116 file_browser.CreateDirectory('apples') | |
117 file_browser.CreateDirectory('oranges') | |
118 self.assertEqual(file_browser.DirectoryContents(), | |
119 set(['apples', 'oranges']), | |
120 msg='Failed to create directories (list = %s).' % | |
121 file_browser.DirectoryContents()) | |
122 file_browser.Select('apples') | |
123 file_browser.Select('oranges') | |
124 file_browser.Delete() | |
125 self.assertFalse(file_browser.DirectoryContents(), | |
126 msg='Failed to delete directories (list = %s).' % | |
127 file_browser.DirectoryContents()) | |
128 | |
129 def _CreateFolder(self, file_browser): | |
130 """Create folders and then change into them.""" | |
131 top_directory = file_browser.CurrentDirectory() | |
132 tree = ['deep', 'deeper', 'deepest'] | |
133 for directory in tree: | |
134 file_browser.CreateDirectory(directory) | |
135 file_browser.ChangeDirectory(directory) | |
136 self.assertEqual(file_browser.CurrentDirectory(), | |
137 top_directory + '/' + '/'.join(tree), | |
138 msg='Ended up in wrong directory (%s)' % | |
139 file_browser.CurrentDirectory()) | |
140 | |
141 def testCreateFolderInFullPage(self): | |
142 """Test we can create a folder in the full page file browser.""" | |
143 file_browser = self._GetFullPageFileBrowser() | |
144 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
145 self._CreateFolder(file_browser) | |
146 | |
147 def testCreateFolderInDialog(self): | |
148 """Test we can create a folder in a save-as file browser dialog.""" | |
149 self.NavigateToURL('chrome://version') | |
150 file_browser = self._GetSaveAsDialogFileBrowser() | |
151 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
152 self._CreateFolder(file_browser) | |
153 | |
154 def _RenameFolder(self, file_browser): | |
155 """Create a folder and then rename it.""" | |
156 file_browser.CreateDirectory('apples') | |
157 file_browser.Select('apples') | |
158 file_browser.Rename('oranges') | |
159 self.assertFalse(file_browser.Select('apples')) | |
160 self.assertTrue(file_browser.Select('oranges')) | |
161 | |
162 def testRenameFolderInFullPage(self): | |
163 """Test we can rename a folder in the full page file browser.""" | |
164 file_browser = self._GetFullPageFileBrowser() | |
165 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
166 self._RenameFolder(file_browser) | |
167 | |
168 def testRenameFolderInDialog(self): | |
169 """Test we can rename a folder in a save-as file browser dialog.""" | |
170 self.NavigateToURL('chrome://version') | |
171 file_browser = self._GetSaveAsDialogFileBrowser() | |
172 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
173 self._RenameFolder(file_browser) | |
174 | |
175 def _DeleteFolder(self, file_browser): | |
176 """Create a folder and then delete it.""" | |
177 file_browser.CreateDirectory('apples') | |
178 file_browser.Select('apples') | |
179 file_browser.Delete() | |
180 self.assertFalse(file_browser.Select('apples')) | |
181 | |
182 def testDeleteFolderInFullPage(self): | |
183 """Test we can delete a folder in the full page file browser.""" | |
184 file_browser = self._GetFullPageFileBrowser() | |
185 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
186 self._DeleteFolder(file_browser) | |
187 | |
188 def testDeleteFolderInDialog(self): | |
189 """Test we can delete a folder in a save-as file browser dialog.""" | |
190 self.NavigateToURL('chrome://version') | |
191 file_browser = self._GetSaveAsDialogFileBrowser() | |
192 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
193 self._DeleteFolder(file_browser) | |
194 | |
195 def _CopyFolder(self, file_browser): | |
196 """Create a folder and then copy and paste it to itself.""" | |
197 file_browser.CreateDirectory('apples') | |
198 file_browser.Select('apples') | |
199 file_browser.Copy() | |
200 file_browser.CreateDirectory('oranges') | |
201 file_browser.ChangeDirectory('oranges') | |
202 file_browser.Paste() | |
203 self.assertTrue(file_browser.Select('apples')) | |
204 | |
205 def testCopyFolderInFullPage(self): | |
206 """Test we can copy and paste a folder in the full page file browser.""" | |
207 file_browser = self._GetFullPageFileBrowser() | |
208 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
209 self._CopyFolder(file_browser) | |
210 | |
211 def _CutFolder(self, file_browser): | |
212 """Create two folders and cut and paste one inside the other.""" | |
213 top_directory = file_browser.CurrentDirectory() | |
214 file_browser.CreateDirectory('apples') | |
215 file_browser.Select('apples') | |
216 file_browser.Cut() | |
217 file_browser.CreateDirectory('oranges') | |
218 file_browser.ChangeDirectory('oranges') | |
219 file_browser.Paste() | |
220 self.assertTrue(file_browser.Select('apples')) | |
221 file_browser.ChangeDirectory(top_directory) | |
222 self.assertFalse(file_browser.Select('apples')) | |
223 | |
224 def testCutFolderInFullPage(self): | |
225 """Test we can cut and paste a folder in the full page file browser.""" | |
226 file_browser = self._GetFullPageFileBrowser() | |
227 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
228 self._CutFolder(file_browser) | |
229 | |
230 def testGetSelectedDirectorySizeStats(self): | |
231 """Test we can get remaining and total size of the file shelf.""" | |
232 file_browser = self._GetFullPageFileBrowser() | |
233 self.assertTrue(file_browser, msg='File browser failed to initialize.') | |
234 file_browser.CreateDirectory('apples') | |
235 file_browser.Select('apples') | |
236 remaining, total = file_browser.GetSelectedDirectorySizeStats() | |
237 self.assertTrue(remaining > 0, | |
238 msg='Remaining disk space = %dKB.' % remaining) | |
239 self.assertTrue(total > 0, | |
240 msg='Total disk space = %dKB.' % total) | |
241 self.assertTrue(total > remaining, | |
242 msg='Total space(%dKB) <= remaining space(%dKB).' % | |
243 (total, remaining)) | |
244 | |
245 | |
246 if __name__ == '__main__': | |
247 pyauto_functional.Main() | |
OLD | NEW |