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 "apps/app_window.h" | |
6 #include "apps/app_window_registry.h" | |
5 #include "apps/launcher.h" | 7 #include "apps/launcher.h" |
6 #include "apps/shell_window.h" | |
7 #include "apps/shell_window_registry.h" | |
8 #include "apps/ui/native_app_window.h" | 8 #include "apps/ui/native_app_window.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
12 #include "base/files/scoped_temp_dir.h" | 12 #include "base/files/scoped_temp_dir.h" |
13 #include "base/prefs/pref_service.h" | 13 #include "base/prefs/pref_service.h" |
14 #include "base/stl_util.h" | 14 #include "base/stl_util.h" |
15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
16 #include "chrome/app/chrome_command_ids.h" | 16 #include "chrome/app/chrome_command_ids.h" |
17 #include "chrome/browser/apps/app_browsertest_util.h" | 17 #include "chrome/browser/apps/app_browsertest_util.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
49 | 49 |
50 #if defined(OS_CHROMEOS) | 50 #if defined(OS_CHROMEOS) |
51 #include "base/memory/scoped_ptr.h" | 51 #include "base/memory/scoped_ptr.h" |
52 #include "chrome/browser/chromeos/login/mock_user_manager.h" | 52 #include "chrome/browser/chromeos/login/mock_user_manager.h" |
53 #include "chrome/browser/chromeos/login/user_manager.h" | 53 #include "chrome/browser/chromeos/login/user_manager.h" |
54 #include "chromeos/dbus/dbus_thread_manager.h" | 54 #include "chromeos/dbus/dbus_thread_manager.h" |
55 #include "chromeos/dbus/fake_dbus_thread_manager.h" | 55 #include "chromeos/dbus/fake_dbus_thread_manager.h" |
56 #include "chromeos/dbus/fake_power_manager_client.h" | 56 #include "chromeos/dbus/fake_power_manager_client.h" |
57 #endif | 57 #endif |
58 | 58 |
59 using apps::ShellWindow; | 59 using apps::AppWindow; |
60 using apps::ShellWindowRegistry; | 60 using apps::AppWindowRegistry; |
61 using content::WebContents; | 61 using content::WebContents; |
62 using web_modal::WebContentsModalDialogManager; | 62 using web_modal::WebContentsModalDialogManager; |
63 | 63 |
64 namespace extensions { | 64 namespace extensions { |
65 | 65 |
66 namespace app_runtime = api::app_runtime; | 66 namespace app_runtime = api::app_runtime; |
67 | 67 |
68 namespace { | 68 namespace { |
69 | 69 |
70 // Non-abstract RenderViewContextMenu class. | 70 // Non-abstract RenderViewContextMenu class. |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
189 return true; | 189 return true; |
190 } | 190 } |
191 #endif // !defined(OS_CHROMEOS) && !defined(OS_WIN) | 191 #endif // !defined(OS_CHROMEOS) && !defined(OS_WIN) |
192 | 192 |
193 #if !defined(OS_CHROMEOS) | 193 #if !defined(OS_CHROMEOS) |
194 const char kTestFilePath[] = "platform_apps/launch_files/test.txt"; | 194 const char kTestFilePath[] = "platform_apps/launch_files/test.txt"; |
195 #endif | 195 #endif |
196 | 196 |
197 } // namespace | 197 } // namespace |
198 | 198 |
199 // Tests that CreateShellWindow doesn't crash if you close it straight away. | 199 // Tests that CreateAppWindow doesn't crash if you close it straight away. |
200 // LauncherPlatformAppBrowserTest relies on this behaviour, but is only run for | 200 // LauncherPlatformAppBrowserTest relies on this behaviour, but is only run for |
201 // ash, so we test that it works here. | 201 // ash, so we test that it works here. |
202 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, CreateAndCloseShellWindow) { | 202 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, CreateAndCloseAppWindow) { |
203 const Extension* extension = LoadAndLaunchPlatformApp("minimal"); | 203 const Extension* extension = LoadAndLaunchPlatformApp("minimal"); |
204 ShellWindow* window = CreateShellWindow(extension); | 204 AppWindow* window = CreateAppWindow(extension); |
205 CloseShellWindow(window); | 205 CloseAppWindow(window); |
206 } | 206 } |
207 | 207 |
208 // Tests that platform apps received the "launch" event when launched. | 208 // Tests that platform apps received the "launch" event when launched. |
209 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, OnLaunchedEvent) { | 209 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, OnLaunchedEvent) { |
210 ASSERT_TRUE(RunPlatformAppTest("platform_apps/launch")) << message_; | 210 ASSERT_TRUE(RunPlatformAppTest("platform_apps/launch")) << message_; |
211 } | 211 } |
212 | 212 |
213 // Tests that platform apps cannot use certain disabled window properties, but | 213 // Tests that platform apps cannot use certain disabled window properties, but |
214 // can override them and then use them. | 214 // can override them and then use them. |
215 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, DisabledWindowProperties) { | 215 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, DisabledWindowProperties) { |
216 ASSERT_TRUE(RunPlatformAppTest("platform_apps/disabled_window_properties")) | 216 ASSERT_TRUE(RunPlatformAppTest("platform_apps/disabled_window_properties")) |
217 << message_; | 217 << message_; |
218 } | 218 } |
219 | 219 |
220 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, EmptyContextMenu) { | 220 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, EmptyContextMenu) { |
221 ExtensionTestMessageListener launched_listener("Launched", false); | 221 ExtensionTestMessageListener launched_listener("Launched", false); |
222 LoadAndLaunchPlatformApp("minimal"); | 222 LoadAndLaunchPlatformApp("minimal"); |
223 | 223 |
224 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 224 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
225 | 225 |
226 // The empty app doesn't add any context menu items, so its menu should | 226 // The empty app doesn't add any context menu items, so its menu should |
227 // only include the developer tools. | 227 // only include the developer tools. |
228 WebContents* web_contents = GetFirstShellWindowWebContents(); | 228 WebContents* web_contents = GetFirstAppWindowWebContents(); |
229 ASSERT_TRUE(web_contents); | 229 ASSERT_TRUE(web_contents); |
230 content::ContextMenuParams params; | 230 content::ContextMenuParams params; |
231 scoped_ptr<PlatformAppContextMenu> menu; | 231 scoped_ptr<PlatformAppContextMenu> menu; |
232 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); | 232 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); |
233 menu->Init(); | 233 menu->Init(); |
234 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 234 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
235 ASSERT_TRUE( | 235 ASSERT_TRUE( |
236 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); | 236 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); |
237 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); | 237 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); |
238 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 238 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
239 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 239 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
240 } | 240 } |
241 | 241 |
242 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenu) { | 242 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenu) { |
243 ExtensionTestMessageListener launched_listener("Launched", false); | 243 ExtensionTestMessageListener launched_listener("Launched", false); |
244 LoadAndLaunchPlatformApp("context_menu"); | 244 LoadAndLaunchPlatformApp("context_menu"); |
245 | 245 |
246 // Wait for the extension to tell us it's initialized its context menus and | 246 // Wait for the extension to tell us it's initialized its context menus and |
247 // launched a window. | 247 // launched a window. |
248 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 248 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
249 | 249 |
250 // The context_menu app has two context menu items. These, along with a | 250 // The context_menu app has two context menu items. These, along with a |
251 // separator and the developer tools, is all that should be in the menu. | 251 // separator and the developer tools, is all that should be in the menu. |
252 WebContents* web_contents = GetFirstShellWindowWebContents(); | 252 WebContents* web_contents = GetFirstAppWindowWebContents(); |
253 ASSERT_TRUE(web_contents); | 253 ASSERT_TRUE(web_contents); |
254 content::ContextMenuParams params; | 254 content::ContextMenuParams params; |
255 scoped_ptr<PlatformAppContextMenu> menu; | 255 scoped_ptr<PlatformAppContextMenu> menu; |
256 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); | 256 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); |
257 menu->Init(); | 257 menu->Init(); |
258 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); | 258 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); |
259 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + 1)); | 259 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + 1)); |
260 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 260 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
261 ASSERT_TRUE( | 261 ASSERT_TRUE( |
262 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); | 262 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); |
263 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); | 263 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); |
264 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 264 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
265 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 265 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
266 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 266 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
267 } | 267 } |
268 | 268 |
269 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, InstalledAppWithContextMenu) { | 269 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, InstalledAppWithContextMenu) { |
270 ExtensionTestMessageListener launched_listener("Launched", false); | 270 ExtensionTestMessageListener launched_listener("Launched", false); |
271 InstallAndLaunchPlatformApp("context_menu"); | 271 InstallAndLaunchPlatformApp("context_menu"); |
272 | 272 |
273 // Wait for the extension to tell us it's initialized its context menus and | 273 // Wait for the extension to tell us it's initialized its context menus and |
274 // launched a window. | 274 // launched a window. |
275 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 275 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
276 | 276 |
277 // The context_menu app has two context menu items. For an installed app | 277 // The context_menu app has two context menu items. For an installed app |
278 // these are all that should be in the menu. | 278 // these are all that should be in the menu. |
279 WebContents* web_contents = GetFirstShellWindowWebContents(); | 279 WebContents* web_contents = GetFirstAppWindowWebContents(); |
280 ASSERT_TRUE(web_contents); | 280 ASSERT_TRUE(web_contents); |
281 content::ContextMenuParams params; | 281 content::ContextMenuParams params; |
282 scoped_ptr<PlatformAppContextMenu> menu; | 282 scoped_ptr<PlatformAppContextMenu> menu; |
283 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); | 283 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); |
284 menu->Init(); | 284 menu->Init(); |
285 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); | 285 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); |
286 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + 1)); | 286 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + 1)); |
287 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 287 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
288 ASSERT_FALSE( | 288 ASSERT_FALSE( |
289 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); | 289 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); |
290 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); | 290 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); |
291 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 291 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
292 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 292 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
293 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 293 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
294 } | 294 } |
295 | 295 |
296 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenuTextField) { | 296 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenuTextField) { |
297 ExtensionTestMessageListener launched_listener("Launched", false); | 297 ExtensionTestMessageListener launched_listener("Launched", false); |
298 LoadAndLaunchPlatformApp("context_menu"); | 298 LoadAndLaunchPlatformApp("context_menu"); |
299 | 299 |
300 // Wait for the extension to tell us it's initialized its context menus and | 300 // Wait for the extension to tell us it's initialized its context menus and |
301 // launched a window. | 301 // launched a window. |
302 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 302 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
303 | 303 |
304 // The context_menu app has one context menu item. This, along with a | 304 // The context_menu app has one context menu item. This, along with a |
305 // separator and the developer tools, is all that should be in the menu. | 305 // separator and the developer tools, is all that should be in the menu. |
306 WebContents* web_contents = GetFirstShellWindowWebContents(); | 306 WebContents* web_contents = GetFirstAppWindowWebContents(); |
307 ASSERT_TRUE(web_contents); | 307 ASSERT_TRUE(web_contents); |
308 content::ContextMenuParams params; | 308 content::ContextMenuParams params; |
309 params.is_editable = true; | 309 params.is_editable = true; |
310 scoped_ptr<PlatformAppContextMenu> menu; | 310 scoped_ptr<PlatformAppContextMenu> menu; |
311 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); | 311 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); |
312 menu->Init(); | 312 menu->Init(); |
313 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); | 313 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); |
314 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 314 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
315 ASSERT_TRUE( | 315 ASSERT_TRUE( |
316 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); | 316 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); |
317 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); | 317 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); |
318 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 318 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
319 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); | 319 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); |
320 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 320 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
321 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 321 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
322 } | 322 } |
323 | 323 |
324 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenuSelection) { | 324 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenuSelection) { |
325 ExtensionTestMessageListener launched_listener("Launched", false); | 325 ExtensionTestMessageListener launched_listener("Launched", false); |
326 LoadAndLaunchPlatformApp("context_menu"); | 326 LoadAndLaunchPlatformApp("context_menu"); |
327 | 327 |
328 // Wait for the extension to tell us it's initialized its context menus and | 328 // Wait for the extension to tell us it's initialized its context menus and |
329 // launched a window. | 329 // launched a window. |
330 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 330 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
331 | 331 |
332 // The context_menu app has one context menu item. This, along with a | 332 // The context_menu app has one context menu item. This, along with a |
333 // separator and the developer tools, is all that should be in the menu. | 333 // separator and the developer tools, is all that should be in the menu. |
334 WebContents* web_contents = GetFirstShellWindowWebContents(); | 334 WebContents* web_contents = GetFirstAppWindowWebContents(); |
335 ASSERT_TRUE(web_contents); | 335 ASSERT_TRUE(web_contents); |
336 content::ContextMenuParams params; | 336 content::ContextMenuParams params; |
337 params.selection_text = base::ASCIIToUTF16("Hello World"); | 337 params.selection_text = base::ASCIIToUTF16("Hello World"); |
338 scoped_ptr<PlatformAppContextMenu> menu; | 338 scoped_ptr<PlatformAppContextMenu> menu; |
339 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); | 339 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); |
340 menu->Init(); | 340 menu->Init(); |
341 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); | 341 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); |
342 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 342 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
343 ASSERT_TRUE( | 343 ASSERT_TRUE( |
344 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); | 344 menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE)); |
345 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); | 345 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP)); |
346 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 346 ASSERT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
347 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); | 347 ASSERT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); |
348 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 348 ASSERT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
349 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 349 ASSERT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
350 } | 350 } |
351 | 351 |
352 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenuClicked) { | 352 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenuClicked) { |
353 ExtensionTestMessageListener launched_listener("Launched", false); | 353 ExtensionTestMessageListener launched_listener("Launched", false); |
354 LoadAndLaunchPlatformApp("context_menu_click"); | 354 LoadAndLaunchPlatformApp("context_menu_click"); |
355 | 355 |
356 // Wait for the extension to tell us it's initialized its context menus and | 356 // Wait for the extension to tell us it's initialized its context menus and |
357 // launched a window. | 357 // launched a window. |
358 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 358 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
359 | 359 |
360 // Test that the menu item shows up | 360 // Test that the menu item shows up |
361 WebContents* web_contents = GetFirstShellWindowWebContents(); | 361 WebContents* web_contents = GetFirstAppWindowWebContents(); |
362 ASSERT_TRUE(web_contents); | 362 ASSERT_TRUE(web_contents); |
363 content::ContextMenuParams params; | 363 content::ContextMenuParams params; |
364 params.page_url = GURL("http://foo.bar"); | 364 params.page_url = GURL("http://foo.bar"); |
365 scoped_ptr<PlatformAppContextMenu> menu; | 365 scoped_ptr<PlatformAppContextMenu> menu; |
366 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); | 366 menu.reset(new PlatformAppContextMenu(web_contents->GetMainFrame(), params)); |
367 menu->Init(); | 367 menu->Init(); |
368 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); | 368 ASSERT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); |
369 | 369 |
370 // Execute the menu item | 370 // Execute the menu item |
371 ExtensionTestMessageListener onclicked_listener("onClicked fired for id1", | 371 ExtensionTestMessageListener onclicked_listener("onClicked fired for id1", |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
454 #define MAYBE_ExtensionWindowingApis ExtensionWindowingApis | 454 #define MAYBE_ExtensionWindowingApis ExtensionWindowingApis |
455 #endif | 455 #endif |
456 | 456 |
457 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_ExtensionWindowingApis) { | 457 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_ExtensionWindowingApis) { |
458 // Initially there should be just the one browser window visible to the | 458 // Initially there should be just the one browser window visible to the |
459 // extensions API. | 459 // extensions API. |
460 const Extension* extension = LoadExtension( | 460 const Extension* extension = LoadExtension( |
461 test_data_dir_.AppendASCII("common/background_page")); | 461 test_data_dir_.AppendASCII("common/background_page")); |
462 ASSERT_EQ(1U, RunGetWindowsFunctionForExtension(extension)); | 462 ASSERT_EQ(1U, RunGetWindowsFunctionForExtension(extension)); |
463 | 463 |
464 // And no shell windows. | 464 // And no app windows. |
465 ASSERT_EQ(0U, GetShellWindowCount()); | 465 ASSERT_EQ(0U, GetAppWindowCount()); |
466 | 466 |
467 // Launch a platform app that shows a window. | 467 // Launch a platform app that shows a window. |
468 ExtensionTestMessageListener launched_listener("Launched", false); | 468 ExtensionTestMessageListener launched_listener("Launched", false); |
469 LoadAndLaunchPlatformApp("minimal"); | 469 LoadAndLaunchPlatformApp("minimal"); |
470 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 470 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
471 ASSERT_EQ(1U, GetShellWindowCount()); | 471 ASSERT_EQ(1U, GetAppWindowCount()); |
472 int shell_window_id = GetFirstShellWindow()->session_id().id(); | 472 int app_window_id = GetFirstAppWindow()->session_id().id(); |
473 | 473 |
474 // But it's not visible to the extensions API, it still thinks there's just | 474 // But it's not visible to the extensions API, it still thinks there's just |
475 // one browser window. | 475 // one browser window. |
476 ASSERT_EQ(1U, RunGetWindowsFunctionForExtension(extension)); | 476 ASSERT_EQ(1U, RunGetWindowsFunctionForExtension(extension)); |
477 // It can't look it up by ID either | 477 // It can't look it up by ID either |
478 ASSERT_FALSE(RunGetWindowFunctionForExtension(shell_window_id, extension)); | 478 ASSERT_FALSE(RunGetWindowFunctionForExtension(app_window_id, extension)); |
479 | 479 |
480 // The app can also only see one window (its own). | 480 // The app can also only see one window (its own). |
481 // TODO(jeremya): add an extension function to get a shell window by ID, and | 481 // TODO(jeremya): add an extension function to get an app window by ID, and |
482 // to get a list of all the shell windows, so we can test this. | 482 // to get a list of all the app windows, so we can test this. |
483 | 483 |
484 // Launch another platform app that also shows a window. | 484 // Launch another platform app that also shows a window. |
485 ExtensionTestMessageListener launched_listener2("Launched", false); | 485 ExtensionTestMessageListener launched_listener2("Launched", false); |
486 LoadAndLaunchPlatformApp("context_menu"); | 486 LoadAndLaunchPlatformApp("context_menu"); |
487 ASSERT_TRUE(launched_listener2.WaitUntilSatisfied()); | 487 ASSERT_TRUE(launched_listener2.WaitUntilSatisfied()); |
488 | 488 |
489 // There are two total shell windows, but each app can only see its own. | 489 // There are two total app windows, but each app can only see its own. |
490 ASSERT_EQ(2U, GetShellWindowCount()); | 490 ASSERT_EQ(2U, GetAppWindowCount()); |
491 // TODO(jeremya): as above, this requires more extension functions. | 491 // TODO(jeremya): as above, this requires more extension functions. |
492 } | 492 } |
493 | 493 |
494 // ChromeOS does not support passing arguments on the command line, so the tests | 494 // ChromeOS does not support passing arguments on the command line, so the tests |
495 // that rely on this functionality are disabled. | 495 // that rely on this functionality are disabled. |
496 #if !defined(OS_CHROMEOS) | 496 #if !defined(OS_CHROMEOS) |
497 // Tests that command line parameters get passed through to platform apps | 497 // Tests that command line parameters get passed through to platform apps |
498 // via launchData correctly when launching with a file. | 498 // via launchData correctly when launching with a file. |
499 // TODO(benwells/jeremya): tests need a way to specify a handler ID. | 499 // TODO(benwells/jeremya): tests need a way to specify a handler ID. |
500 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, LaunchWithFile) { | 500 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, LaunchWithFile) { |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
708 ASSERT_EQ(2, browser()->tab_strip_model()->count()); | 708 ASSERT_EQ(2, browser()->tab_strip_model()->count()); |
709 } | 709 } |
710 | 710 |
711 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MutationEventsDisabled) { | 711 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MutationEventsDisabled) { |
712 ASSERT_TRUE(RunPlatformAppTest("platform_apps/mutation_events")) << message_; | 712 ASSERT_TRUE(RunPlatformAppTest("platform_apps/mutation_events")) << message_; |
713 } | 713 } |
714 | 714 |
715 // This appears to be unreliable on linux. | 715 // This appears to be unreliable on linux. |
716 // TODO(stevenjb): Investigate and enable | 716 // TODO(stevenjb): Investigate and enable |
717 #if defined(OS_LINUX) && !defined(USE_ASH) | 717 #if defined(OS_LINUX) && !defined(USE_ASH) |
718 #define MAYBE_ShellWindowRestoreState DISABLED_ShellWindowRestoreState | 718 #define MAYBE_AppWindowRestoreState DISABLED_AppWindowRestoreState |
719 #else | 719 #else |
720 #define MAYBE_ShellWindowRestoreState ShellWindowRestoreState | 720 #define MAYBE_AppWindowRestoreState AppWindowRestoreState |
721 #endif | 721 #endif |
722 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, | 722 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_AppWindowRestoreState) { |
723 MAYBE_ShellWindowRestoreState) { | |
724 ASSERT_TRUE(RunPlatformAppTest("platform_apps/restore_state")); | 723 ASSERT_TRUE(RunPlatformAppTest("platform_apps/restore_state")); |
725 } | 724 } |
726 | 725 |
727 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, | 726 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, |
728 ShellWindowAdjustBoundsToBeVisibleOnScreen) { | 727 AppWindowAdjustBoundsToBeVisibleOnScreen) { |
729 const Extension* extension = LoadAndLaunchPlatformApp("minimal"); | 728 const Extension* extension = LoadAndLaunchPlatformApp("minimal"); |
730 ShellWindow* window = CreateShellWindow(extension); | 729 AppWindow* window = CreateAppWindow(extension); |
731 | 730 |
732 // The screen bounds didn't change, the cached bounds didn't need to adjust. | 731 // The screen bounds didn't change, the cached bounds didn't need to adjust. |
733 gfx::Rect cached_bounds(80, 100, 400, 400); | 732 gfx::Rect cached_bounds(80, 100, 400, 400); |
734 gfx::Rect cached_screen_bounds(0, 0, 1600, 900); | 733 gfx::Rect cached_screen_bounds(0, 0, 1600, 900); |
735 gfx::Rect current_screen_bounds(0, 0, 1600, 900); | 734 gfx::Rect current_screen_bounds(0, 0, 1600, 900); |
736 gfx::Size minimum_size(200, 200); | 735 gfx::Size minimum_size(200, 200); |
737 gfx::Rect bounds; | 736 gfx::Rect bounds; |
738 CallAdjustBoundsToBeVisibleOnScreenForShellWindow(window, | 737 CallAdjustBoundsToBeVisibleOnScreenForAppWindow(window, |
739 cached_bounds, | 738 cached_bounds, |
740 cached_screen_bounds, | 739 cached_screen_bounds, |
741 current_screen_bounds, | 740 current_screen_bounds, |
742 minimum_size, | 741 minimum_size, |
743 &bounds); | 742 &bounds); |
744 EXPECT_EQ(bounds, cached_bounds); | 743 EXPECT_EQ(bounds, cached_bounds); |
745 | 744 |
746 // We have an empty screen bounds, the cached bounds didn't need to adjust. | 745 // We have an empty screen bounds, the cached bounds didn't need to adjust. |
747 gfx::Rect empty_screen_bounds; | 746 gfx::Rect empty_screen_bounds; |
748 CallAdjustBoundsToBeVisibleOnScreenForShellWindow(window, | 747 CallAdjustBoundsToBeVisibleOnScreenForAppWindow(window, |
749 cached_bounds, | 748 cached_bounds, |
750 empty_screen_bounds, | 749 empty_screen_bounds, |
751 current_screen_bounds, | 750 current_screen_bounds, |
752 minimum_size, | 751 minimum_size, |
753 &bounds); | 752 &bounds); |
754 EXPECT_EQ(bounds, cached_bounds); | 753 EXPECT_EQ(bounds, cached_bounds); |
755 | 754 |
756 // Cached bounds is completely off the new screen bounds in horizontal | 755 // Cached bounds is completely off the new screen bounds in horizontal |
757 // locations. Expect to reposition the bounds. | 756 // locations. Expect to reposition the bounds. |
758 gfx::Rect horizontal_out_of_screen_bounds(-800, 100, 400, 400); | 757 gfx::Rect horizontal_out_of_screen_bounds(-800, 100, 400, 400); |
759 CallAdjustBoundsToBeVisibleOnScreenForShellWindow( | 758 CallAdjustBoundsToBeVisibleOnScreenForAppWindow( |
760 window, | 759 window, |
761 horizontal_out_of_screen_bounds, | 760 horizontal_out_of_screen_bounds, |
762 gfx::Rect(-1366, 0, 1600, 900), | 761 gfx::Rect(-1366, 0, 1600, 900), |
763 current_screen_bounds, | 762 current_screen_bounds, |
764 minimum_size, | 763 minimum_size, |
765 &bounds); | 764 &bounds); |
766 EXPECT_EQ(bounds, gfx::Rect(0, 100, 400, 400)); | 765 EXPECT_EQ(bounds, gfx::Rect(0, 100, 400, 400)); |
767 | 766 |
768 // Cached bounds is completely off the new screen bounds in vertical | 767 // Cached bounds is completely off the new screen bounds in vertical |
769 // locations. Expect to reposition the bounds. | 768 // locations. Expect to reposition the bounds. |
770 gfx::Rect vertical_out_of_screen_bounds(10, 1000, 400, 400); | 769 gfx::Rect vertical_out_of_screen_bounds(10, 1000, 400, 400); |
771 CallAdjustBoundsToBeVisibleOnScreenForShellWindow( | 770 CallAdjustBoundsToBeVisibleOnScreenForAppWindow( |
772 window, | 771 window, |
773 vertical_out_of_screen_bounds, | 772 vertical_out_of_screen_bounds, |
774 gfx::Rect(-1366, 0, 1600, 900), | 773 gfx::Rect(-1366, 0, 1600, 900), |
775 current_screen_bounds, | 774 current_screen_bounds, |
776 minimum_size, | 775 minimum_size, |
777 &bounds); | 776 &bounds); |
778 EXPECT_EQ(bounds, gfx::Rect(10, 500, 400, 400)); | 777 EXPECT_EQ(bounds, gfx::Rect(10, 500, 400, 400)); |
779 | 778 |
780 // From a large screen resulotion to a small one. Expect it fit on screen. | 779 // From a large screen resulotion to a small one. Expect it fit on screen. |
781 gfx::Rect big_cache_bounds(10, 10, 1000, 1000); | 780 gfx::Rect big_cache_bounds(10, 10, 1000, 1000); |
782 CallAdjustBoundsToBeVisibleOnScreenForShellWindow( | 781 CallAdjustBoundsToBeVisibleOnScreenForAppWindow(window, |
783 window, | 782 big_cache_bounds, |
784 big_cache_bounds, | 783 gfx::Rect(0, 0, 1600, 1000), |
785 gfx::Rect(0, 0, 1600, 1000), | 784 gfx::Rect(0, 0, 800, 600), |
786 gfx::Rect(0, 0, 800, 600), | 785 minimum_size, |
787 minimum_size, | 786 &bounds); |
788 &bounds); | |
789 EXPECT_EQ(bounds, gfx::Rect(0, 0, 800, 600)); | 787 EXPECT_EQ(bounds, gfx::Rect(0, 0, 800, 600)); |
790 | 788 |
791 // Don't resize the bounds smaller than minimum size, when the minimum size is | 789 // Don't resize the bounds smaller than minimum size, when the minimum size is |
792 // larger than the screen. | 790 // larger than the screen. |
793 CallAdjustBoundsToBeVisibleOnScreenForShellWindow( | 791 CallAdjustBoundsToBeVisibleOnScreenForAppWindow(window, |
794 window, | 792 big_cache_bounds, |
795 big_cache_bounds, | 793 gfx::Rect(0, 0, 1600, 1000), |
796 gfx::Rect(0, 0, 1600, 1000), | 794 gfx::Rect(0, 0, 800, 600), |
797 gfx::Rect(0, 0, 800, 600), | 795 gfx::Size(900, 900), |
798 gfx::Size(900, 900), | 796 &bounds); |
799 &bounds); | |
800 EXPECT_EQ(bounds, gfx::Rect(0, 0, 900, 900)); | 797 EXPECT_EQ(bounds, gfx::Rect(0, 0, 900, 900)); |
801 } | 798 } |
802 | 799 |
803 namespace { | 800 namespace { |
804 | 801 |
805 class PlatformAppDevToolsBrowserTest : public PlatformAppBrowserTest { | 802 class PlatformAppDevToolsBrowserTest : public PlatformAppBrowserTest { |
806 protected: | 803 protected: |
807 enum TestFlags { | 804 enum TestFlags { |
808 RELAUNCH = 0x1, | 805 RELAUNCH = 0x1, |
809 HAS_ID = 0x2, | 806 HAS_ID = 0x2, |
810 }; | 807 }; |
811 // Runs a test inside a harness that opens DevTools on a shell window. | 808 // Runs a test inside a harness that opens DevTools on a app window. |
scheib
2014/02/15 00:26:36
a -> an app window
| |
812 void RunTestWithDevTools(const char* name, int test_flags); | 809 void RunTestWithDevTools(const char* name, int test_flags); |
813 }; | 810 }; |
814 | 811 |
815 void PlatformAppDevToolsBrowserTest::RunTestWithDevTools( | 812 void PlatformAppDevToolsBrowserTest::RunTestWithDevTools( |
816 const char* name, int test_flags) { | 813 const char* name, int test_flags) { |
817 using content::DevToolsAgentHost; | 814 using content::DevToolsAgentHost; |
818 ExtensionTestMessageListener launched_listener("Launched", false); | 815 ExtensionTestMessageListener launched_listener("Launched", false); |
819 const Extension* extension = LoadAndLaunchPlatformApp(name); | 816 const Extension* extension = LoadAndLaunchPlatformApp(name); |
820 ASSERT_TRUE(extension); | 817 ASSERT_TRUE(extension); |
821 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 818 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
822 ShellWindow* window = GetFirstShellWindow(); | 819 AppWindow* window = GetFirstAppWindow(); |
823 ASSERT_TRUE(window); | 820 ASSERT_TRUE(window); |
824 ASSERT_EQ(window->window_key().empty(), (test_flags & HAS_ID) == 0); | 821 ASSERT_EQ(window->window_key().empty(), (test_flags & HAS_ID) == 0); |
825 content::RenderViewHost* rvh = window->web_contents()->GetRenderViewHost(); | 822 content::RenderViewHost* rvh = window->web_contents()->GetRenderViewHost(); |
826 ASSERT_TRUE(rvh); | 823 ASSERT_TRUE(rvh); |
827 | 824 |
828 // Ensure no DevTools open for the ShellWindow, then open one. | 825 // Ensure no DevTools open for the AppWindow, then open one. |
829 ASSERT_FALSE(DevToolsAgentHost::HasFor(rvh)); | 826 ASSERT_FALSE(DevToolsAgentHost::HasFor(rvh)); |
830 DevToolsWindow::OpenDevToolsWindow(rvh); | 827 DevToolsWindow::OpenDevToolsWindow(rvh); |
831 ASSERT_TRUE(DevToolsAgentHost::HasFor(rvh)); | 828 ASSERT_TRUE(DevToolsAgentHost::HasFor(rvh)); |
832 | 829 |
833 if (test_flags & RELAUNCH) { | 830 if (test_flags & RELAUNCH) { |
834 // Close the ShellWindow, and ensure it is gone. | 831 // Close the AppWindow, and ensure it is gone. |
835 CloseShellWindow(window); | 832 CloseAppWindow(window); |
836 ASSERT_FALSE(GetFirstShellWindow()); | 833 ASSERT_FALSE(GetFirstAppWindow()); |
837 | 834 |
838 // Relaunch the app and get a new ShellWindow. | 835 // Relaunch the app and get a new AppWindow. |
839 content::WindowedNotificationObserver app_loaded_observer( | 836 content::WindowedNotificationObserver app_loaded_observer( |
840 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, | 837 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, |
841 content::NotificationService::AllSources()); | 838 content::NotificationService::AllSources()); |
842 OpenApplication(AppLaunchParams( | 839 OpenApplication(AppLaunchParams( |
843 browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); | 840 browser()->profile(), extension, LAUNCH_CONTAINER_NONE, NEW_WINDOW)); |
844 app_loaded_observer.Wait(); | 841 app_loaded_observer.Wait(); |
845 window = GetFirstShellWindow(); | 842 window = GetFirstAppWindow(); |
846 ASSERT_TRUE(window); | 843 ASSERT_TRUE(window); |
847 | 844 |
848 // DevTools should have reopened with the relaunch. | 845 // DevTools should have reopened with the relaunch. |
849 rvh = window->web_contents()->GetRenderViewHost(); | 846 rvh = window->web_contents()->GetRenderViewHost(); |
850 ASSERT_TRUE(rvh); | 847 ASSERT_TRUE(rvh); |
851 ASSERT_TRUE(DevToolsAgentHost::HasFor(rvh)); | 848 ASSERT_TRUE(DevToolsAgentHost::HasFor(rvh)); |
852 } | 849 } |
853 } | 850 } |
854 | 851 |
855 } // namespace | 852 } // namespace |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
888 // fixed. | 885 // fixed. |
889 #define MAYBE_ConstrainedWindowRequest DISABLED_ConstrainedWindowRequest | 886 #define MAYBE_ConstrainedWindowRequest DISABLED_ConstrainedWindowRequest |
890 #endif | 887 #endif |
891 | 888 |
892 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_ConstrainedWindowRequest) { | 889 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_ConstrainedWindowRequest) { |
893 PermissionsRequestFunction::SetIgnoreUserGestureForTests(true); | 890 PermissionsRequestFunction::SetIgnoreUserGestureForTests(true); |
894 const Extension* extension = | 891 const Extension* extension = |
895 LoadAndLaunchPlatformApp("optional_permission_request"); | 892 LoadAndLaunchPlatformApp("optional_permission_request"); |
896 ASSERT_TRUE(extension) << "Failed to load extension."; | 893 ASSERT_TRUE(extension) << "Failed to load extension."; |
897 | 894 |
898 WebContents* web_contents = GetFirstShellWindowWebContents(); | 895 WebContents* web_contents = GetFirstAppWindowWebContents(); |
899 ASSERT_TRUE(web_contents); | 896 ASSERT_TRUE(web_contents); |
900 | 897 |
901 // Verify that the shell window has a dialog attached. | 898 // Verify that the app window has a dialog attached. |
902 WebContentsModalDialogManager* web_contents_modal_dialog_manager = | 899 WebContentsModalDialogManager* web_contents_modal_dialog_manager = |
903 WebContentsModalDialogManager::FromWebContents(web_contents); | 900 WebContentsModalDialogManager::FromWebContents(web_contents); |
904 EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive()); | 901 EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive()); |
905 | 902 |
906 // Close the constrained window and wait for the reply to the permission | 903 // Close the constrained window and wait for the reply to the permission |
907 // request. | 904 // request. |
908 ExtensionTestMessageListener listener("PermissionRequestDone", false); | 905 ExtensionTestMessageListener listener("PermissionRequestDone", false); |
909 WebContentsModalDialogManager::TestApi test_api( | 906 WebContentsModalDialogManager::TestApi test_api( |
910 web_contents_modal_dialog_manager); | 907 web_contents_modal_dialog_manager); |
911 test_api.CloseAllDialogs(); | 908 test_api.CloseAllDialogs(); |
912 ASSERT_TRUE(listener.WaitUntilSatisfied()); | 909 ASSERT_TRUE(listener.WaitUntilSatisfied()); |
913 } | 910 } |
914 | 911 |
915 // Tests that an app calling chrome.runtime.reload will reload the app and | 912 // Tests that an app calling chrome.runtime.reload will reload the app and |
916 // relaunch it if it was running. | 913 // relaunch it if it was running. |
917 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, ReloadRelaunches) { | 914 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, ReloadRelaunches) { |
918 ExtensionTestMessageListener launched_listener("Launched", true); | 915 ExtensionTestMessageListener launched_listener("Launched", true); |
919 const Extension* extension = LoadAndLaunchPlatformApp("reload"); | 916 const Extension* extension = LoadAndLaunchPlatformApp("reload"); |
920 ASSERT_TRUE(extension); | 917 ASSERT_TRUE(extension); |
921 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 918 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
922 ASSERT_TRUE(GetFirstShellWindow()); | 919 ASSERT_TRUE(GetFirstAppWindow()); |
923 | 920 |
924 // Now tell the app to reload itself | 921 // Now tell the app to reload itself |
925 ExtensionTestMessageListener launched_listener2("Launched", false); | 922 ExtensionTestMessageListener launched_listener2("Launched", false); |
926 launched_listener.Reply("reload"); | 923 launched_listener.Reply("reload"); |
927 ASSERT_TRUE(launched_listener2.WaitUntilSatisfied()); | 924 ASSERT_TRUE(launched_listener2.WaitUntilSatisfied()); |
928 ASSERT_TRUE(GetFirstShellWindow()); | 925 ASSERT_TRUE(GetFirstAppWindow()); |
929 } | 926 } |
930 | 927 |
931 namespace { | 928 namespace { |
932 | 929 |
933 // Simple observer to check for NOTIFICATION_EXTENSION_INSTALLED events to | 930 // Simple observer to check for NOTIFICATION_EXTENSION_INSTALLED events to |
934 // ensure installation does or does not occur in certain scenarios. | 931 // ensure installation does or does not occur in certain scenarios. |
935 class CheckExtensionInstalledObserver : public content::NotificationObserver { | 932 class CheckExtensionInstalledObserver : public content::NotificationObserver { |
936 public: | 933 public: |
937 CheckExtensionInstalledObserver() : seen_(false) { | 934 CheckExtensionInstalledObserver() : seen_(false) { |
938 registrar_.Add(this, | 935 registrar_.Add(this, |
(...skipping 16 matching lines...) Expand all Loading... | |
955 private: | 952 private: |
956 bool seen_; | 953 bool seen_; |
957 content::NotificationRegistrar registrar_; | 954 content::NotificationRegistrar registrar_; |
958 }; | 955 }; |
959 | 956 |
960 } // namespace | 957 } // namespace |
961 | 958 |
962 // Component App Test 1 of 3: ensure that the initial load of a component | 959 // Component App Test 1 of 3: ensure that the initial load of a component |
963 // extension utilizing a background page (e.g. a v2 platform app) has its | 960 // extension utilizing a background page (e.g. a v2 platform app) has its |
964 // background page run and is launchable. Waits for the Launched response from | 961 // background page run and is launchable. Waits for the Launched response from |
965 // the script resource in the opened shell window. | 962 // the script resource in the opened app window. |
966 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, | 963 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, |
967 PRE_PRE_ComponentAppBackgroundPage) { | 964 PRE_PRE_ComponentAppBackgroundPage) { |
968 CheckExtensionInstalledObserver should_install; | 965 CheckExtensionInstalledObserver should_install; |
969 | 966 |
970 // Ensure that we wait until the background page is run (to register the | 967 // Ensure that we wait until the background page is run (to register the |
971 // OnLaunched listener) before trying to open the application. This is similar | 968 // OnLaunched listener) before trying to open the application. This is similar |
972 // to LoadAndLaunchPlatformApp, but we want to load as a component extension. | 969 // to LoadAndLaunchPlatformApp, but we want to load as a component extension. |
973 content::WindowedNotificationObserver app_loaded_observer( | 970 content::WindowedNotificationObserver app_loaded_observer( |
974 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, | 971 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, |
975 content::NotificationService::AllSources()); | 972 content::NotificationService::AllSources()); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1069 #else | 1066 #else |
1070 // This test depends on focus and so needs to be in interactive_ui_tests. | 1067 // This test depends on focus and so needs to be in interactive_ui_tests. |
1071 // http://crbug.com/227041 | 1068 // http://crbug.com/227041 |
1072 #define MAYBE_WebContentsHasFocus DISABLED_WebContentsHasFocus | 1069 #define MAYBE_WebContentsHasFocus DISABLED_WebContentsHasFocus |
1073 #endif | 1070 #endif |
1074 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_WebContentsHasFocus) { | 1071 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_WebContentsHasFocus) { |
1075 ExtensionTestMessageListener launched_listener("Launched", true); | 1072 ExtensionTestMessageListener launched_listener("Launched", true); |
1076 LoadAndLaunchPlatformApp("minimal"); | 1073 LoadAndLaunchPlatformApp("minimal"); |
1077 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 1074 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
1078 | 1075 |
1079 EXPECT_EQ(1LU, GetShellWindowCount()); | 1076 EXPECT_EQ(1LU, GetAppWindowCount()); |
1080 EXPECT_TRUE(GetFirstShellWindow()->web_contents()-> | 1077 EXPECT_TRUE(GetFirstAppWindow() |
1081 GetRenderWidgetHostView()->HasFocus()); | 1078 ->web_contents() |
1079 ->GetRenderWidgetHostView() | |
1080 ->HasFocus()); | |
1082 } | 1081 } |
1083 | 1082 |
1084 // The next three tests will only run automatically with Chrome branded builds | 1083 // The next three tests will only run automatically with Chrome branded builds |
1085 // because they require the PDF preview plug-in. To run these tests manually for | 1084 // because they require the PDF preview plug-in. To run these tests manually for |
1086 // Chromium (non-Chrome branded) builds in a development environment: | 1085 // Chromium (non-Chrome branded) builds in a development environment: |
1087 // | 1086 // |
1088 // 1) Remove "MAYBE_" in the first line of each test definition | 1087 // 1) Remove "MAYBE_" in the first line of each test definition |
1089 // 2) Build Chromium browser_tests | 1088 // 2) Build Chromium browser_tests |
1090 // 3) Make a copy of the PDF plug-in from a recent version of Chrome (Canary | 1089 // 3) Make a copy of the PDF plug-in from a recent version of Chrome (Canary |
1091 // or a recent development build) to your Chromium build: | 1090 // or a recent development build) to your Chromium build: |
(...skipping 27 matching lines...) Expand all Loading... | |
1119 #define MAYBE_ClosingWindowWhilePrintingShouldNotCrash \ | 1118 #define MAYBE_ClosingWindowWhilePrintingShouldNotCrash \ |
1120 ClosingWindowWhilePrintingShouldNotCrash | 1119 ClosingWindowWhilePrintingShouldNotCrash |
1121 #endif | 1120 #endif |
1122 | 1121 |
1123 // This test verifies that http://crbug.com/297179 is fixed. | 1122 // This test verifies that http://crbug.com/297179 is fixed. |
1124 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, | 1123 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, |
1125 MAYBE_ClosingWindowWhilePrintingShouldNotCrash) { | 1124 MAYBE_ClosingWindowWhilePrintingShouldNotCrash) { |
1126 ScopedPreviewTestingDelegate preview_delegate(false); | 1125 ScopedPreviewTestingDelegate preview_delegate(false); |
1127 ASSERT_TRUE(RunPlatformAppTest("platform_apps/print_api")) << message_; | 1126 ASSERT_TRUE(RunPlatformAppTest("platform_apps/print_api")) << message_; |
1128 preview_delegate.WaitUntilPreviewIsReady(); | 1127 preview_delegate.WaitUntilPreviewIsReady(); |
1129 GetFirstShellWindow()->GetBaseWindow()->Close(); | 1128 GetFirstAppWindow()->GetBaseWindow()->Close(); |
1130 } | 1129 } |
1131 | 1130 |
1132 // This test currently only passes on OS X (on other platforms the print preview | 1131 // This test currently only passes on OS X (on other platforms the print preview |
1133 // dialog's size is limited by the size of the window being printed). | 1132 // dialog's size is limited by the size of the window being printed). |
1134 #if !defined(GOOGLE_CHROME_BUILD) || !defined(OS_MACOSX) | 1133 #if !defined(GOOGLE_CHROME_BUILD) || !defined(OS_MACOSX) |
1135 #define MAYBE_PrintPreviewShouldNotBeTooSmall \ | 1134 #define MAYBE_PrintPreviewShouldNotBeTooSmall \ |
1136 DISABLED_PrintPreviewShouldNotBeTooSmall | 1135 DISABLED_PrintPreviewShouldNotBeTooSmall |
1137 #else | 1136 #else |
1138 #define MAYBE_PrintPreviewShouldNotBeTooSmall \ | 1137 #define MAYBE_PrintPreviewShouldNotBeTooSmall \ |
1139 PrintPreviewShouldNotBeTooSmall | 1138 PrintPreviewShouldNotBeTooSmall |
1140 #endif | 1139 #endif |
1141 | 1140 |
1142 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, | 1141 IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, |
1143 MAYBE_PrintPreviewShouldNotBeTooSmall) { | 1142 MAYBE_PrintPreviewShouldNotBeTooSmall) { |
1144 // Print preview dialogs with widths less than 410 pixels will have preview | 1143 // Print preview dialogs with widths less than 410 pixels will have preview |
1145 // areas that are too small, and ones with heights less than 191 pixels will | 1144 // areas that are too small, and ones with heights less than 191 pixels will |
1146 // have vertical scrollers for their controls that are too small. | 1145 // have vertical scrollers for their controls that are too small. |
1147 gfx::Size minimum_dialog_size(410, 191); | 1146 gfx::Size minimum_dialog_size(410, 191); |
1148 ScopedPreviewTestingDelegate preview_delegate(false); | 1147 ScopedPreviewTestingDelegate preview_delegate(false); |
1149 ASSERT_TRUE(RunPlatformAppTest("platform_apps/print_api")) << message_; | 1148 ASSERT_TRUE(RunPlatformAppTest("platform_apps/print_api")) << message_; |
1150 preview_delegate.WaitUntilPreviewIsReady(); | 1149 preview_delegate.WaitUntilPreviewIsReady(); |
1151 EXPECT_GE(preview_delegate.dialog_size().width(), | 1150 EXPECT_GE(preview_delegate.dialog_size().width(), |
1152 minimum_dialog_size.width()); | 1151 minimum_dialog_size.width()); |
1153 EXPECT_GE(preview_delegate.dialog_size().height(), | 1152 EXPECT_GE(preview_delegate.dialog_size().height(), |
1154 minimum_dialog_size.height()); | 1153 minimum_dialog_size.height()); |
1155 GetFirstShellWindow()->GetBaseWindow()->Close(); | 1154 GetFirstAppWindow()->GetBaseWindow()->Close(); |
1156 } | 1155 } |
1157 | 1156 |
1158 | 1157 |
1159 #if defined(OS_CHROMEOS) | 1158 #if defined(OS_CHROMEOS) |
1160 | 1159 |
1161 class PlatformAppIncognitoBrowserTest : public PlatformAppBrowserTest, | 1160 class PlatformAppIncognitoBrowserTest : public PlatformAppBrowserTest, |
1162 public ShellWindowRegistry::Observer { | 1161 public AppWindowRegistry::Observer { |
1163 public: | 1162 public: |
1164 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 1163 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
1165 // Tell chromeos to launch in Guest mode, aka incognito. | 1164 // Tell chromeos to launch in Guest mode, aka incognito. |
1166 command_line->AppendSwitch(switches::kIncognito); | 1165 command_line->AppendSwitch(switches::kIncognito); |
1167 PlatformAppBrowserTest::SetUpCommandLine(command_line); | 1166 PlatformAppBrowserTest::SetUpCommandLine(command_line); |
1168 } | 1167 } |
1169 virtual void SetUp() OVERRIDE { | 1168 virtual void SetUp() OVERRIDE { |
1170 // Make sure the file manager actually gets loaded. | 1169 // Make sure the file manager actually gets loaded. |
1171 ComponentLoader::EnableBackgroundExtensionsForTesting(); | 1170 ComponentLoader::EnableBackgroundExtensionsForTesting(); |
1172 PlatformAppBrowserTest::SetUp(); | 1171 PlatformAppBrowserTest::SetUp(); |
1173 } | 1172 } |
1174 | 1173 |
1175 // ShellWindowRegistry::Observer implementation. | 1174 // AppWindowRegistry::Observer implementation. |
1176 virtual void OnShellWindowAdded(ShellWindow* shell_window) OVERRIDE { | 1175 virtual void OnAppWindowAdded(AppWindow* app_window) OVERRIDE { |
1177 opener_app_ids_.insert(shell_window->extension()->id()); | 1176 opener_app_ids_.insert(app_window->extension()->id()); |
1178 } | 1177 } |
1179 virtual void OnShellWindowIconChanged(ShellWindow* shell_window) OVERRIDE {} | 1178 virtual void OnAppWindowIconChanged(AppWindow* app_window) OVERRIDE {} |
1180 virtual void OnShellWindowRemoved(ShellWindow* shell_window) OVERRIDE {} | 1179 virtual void OnAppWindowRemoved(AppWindow* app_window) OVERRIDE {} |
1181 | 1180 |
1182 protected: | 1181 protected: |
1183 // A set of ids of apps we've seen open a shell window. | 1182 // A set of ids of apps we've seen open a app window. |
1184 std::set<std::string> opener_app_ids_; | 1183 std::set<std::string> opener_app_ids_; |
1185 }; | 1184 }; |
1186 | 1185 |
1187 IN_PROC_BROWSER_TEST_F(PlatformAppIncognitoBrowserTest, IncognitoComponentApp) { | 1186 IN_PROC_BROWSER_TEST_F(PlatformAppIncognitoBrowserTest, IncognitoComponentApp) { |
1188 // Get the file manager app. | 1187 // Get the file manager app. |
1189 const Extension* file_manager = extension_service()->GetExtensionById( | 1188 const Extension* file_manager = extension_service()->GetExtensionById( |
1190 "hhaomjibdihmijegdhdafkllkbggdgoj", false); | 1189 "hhaomjibdihmijegdhdafkllkbggdgoj", false); |
1191 ASSERT_TRUE(file_manager != NULL); | 1190 ASSERT_TRUE(file_manager != NULL); |
1192 Profile* incognito_profile = profile()->GetOffTheRecordProfile(); | 1191 Profile* incognito_profile = profile()->GetOffTheRecordProfile(); |
1193 ASSERT_TRUE(incognito_profile != NULL); | 1192 ASSERT_TRUE(incognito_profile != NULL); |
1194 | 1193 |
1195 // Wait until the file manager has had a chance to register its listener | 1194 // Wait until the file manager has had a chance to register its listener |
1196 // for the launch event. | 1195 // for the launch event. |
1197 EventRouter* router = ExtensionSystem::Get(incognito_profile)->event_router(); | 1196 EventRouter* router = ExtensionSystem::Get(incognito_profile)->event_router(); |
1198 ASSERT_TRUE(router != NULL); | 1197 ASSERT_TRUE(router != NULL); |
1199 while (!router->ExtensionHasEventListener( | 1198 while (!router->ExtensionHasEventListener( |
1200 file_manager->id(), app_runtime::OnLaunched::kEventName)) { | 1199 file_manager->id(), app_runtime::OnLaunched::kEventName)) { |
1201 content::RunAllPendingInMessageLoop(); | 1200 content::RunAllPendingInMessageLoop(); |
1202 } | 1201 } |
1203 | 1202 |
1204 // Listen for new shell windows so we see the file manager app launch itself. | 1203 // Listen for new app windows so we see the file manager app launch itself. |
1205 ShellWindowRegistry* registry = ShellWindowRegistry::Get(incognito_profile); | 1204 AppWindowRegistry* registry = AppWindowRegistry::Get(incognito_profile); |
1206 ASSERT_TRUE(registry != NULL); | 1205 ASSERT_TRUE(registry != NULL); |
1207 registry->AddObserver(this); | 1206 registry->AddObserver(this); |
1208 | 1207 |
1209 OpenApplication(AppLaunchParams( | 1208 OpenApplication(AppLaunchParams( |
1210 incognito_profile, file_manager, 0, chrome::HOST_DESKTOP_TYPE_NATIVE)); | 1209 incognito_profile, file_manager, 0, chrome::HOST_DESKTOP_TYPE_NATIVE)); |
1211 | 1210 |
1212 while (!ContainsKey(opener_app_ids_, file_manager->id())) { | 1211 while (!ContainsKey(opener_app_ids_, file_manager->id())) { |
1213 content::RunAllPendingInMessageLoop(); | 1212 content::RunAllPendingInMessageLoop(); |
1214 } | 1213 } |
1215 } | 1214 } |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1322 | 1321 |
1323 ExtensionApiTest::ResultCatcher result_catcher; | 1322 ExtensionApiTest::ResultCatcher result_catcher; |
1324 | 1323 |
1325 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); | 1324 ASSERT_TRUE(launched_listener.WaitUntilSatisfied()); |
1326 | 1325 |
1327 EXPECT_TRUE(result_catcher.GetNextResult()); | 1326 EXPECT_TRUE(result_catcher.GetNextResult()); |
1328 } | 1327 } |
1329 } | 1328 } |
1330 | 1329 |
1331 } // namespace extensions | 1330 } // namespace extensions |
OLD | NEW |