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

Side by Side Diff: chrome/browser/ui/ash/launcher/arc_app_launcher_browsertest.cc

Issue 2290603002: Enhance chrome.app.window API for shelf integration with pinning support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ash/common/shelf/shelf_delegate.h" 5 #include "ash/common/shelf/shelf_delegate.h"
6 #include "ash/common/wm_shell.h" 6 #include "ash/common/wm_shell.h"
7 #include "ash/shelf/shelf_util.h" 7 #include "ash/shelf/shelf_util.h"
8 #include "ash/wm/window_util.h" 8 #include "ash/wm/window_util.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 }; 217 };
218 218
219 // This tests simulates normal workflow for starting Arc app in deferred mode. 219 // This tests simulates normal workflow for starting Arc app in deferred mode.
220 IN_PROC_BROWSER_TEST_P(ArcAppDeferredLauncherBrowserTest, StartAppDeferred) { 220 IN_PROC_BROWSER_TEST_P(ArcAppDeferredLauncherBrowserTest, StartAppDeferred) {
221 // Install app to remember existing apps. 221 // Install app to remember existing apps.
222 InstallTestApps(false); 222 InstallTestApps(false);
223 223
224 const std::string app_id = GetTestApp1Id(); 224 const std::string app_id = GetTestApp1Id();
225 if (is_pinned()) { 225 if (is_pinned()) {
226 shelf_delegate()->PinAppWithID(app_id); 226 shelf_delegate()->PinAppWithID(app_id);
227 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id)); 227 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
228 } else { 228 } else {
229 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id)); 229 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
230 } 230 }
231 231
232 StopInstance(); 232 StopInstance();
233 std::unique_ptr<ArcAppListPrefs::AppInfo> app_info = 233 std::unique_ptr<ArcAppListPrefs::AppInfo> app_info =
234 app_prefs()->GetApp(app_id); 234 app_prefs()->GetApp(app_id);
235 EXPECT_FALSE(app_info); 235 EXPECT_FALSE(app_info);
236 236
237 // Restart instance. App should be taken from prefs but its state is non-ready 237 // Restart instance. App should be taken from prefs but its state is non-ready
238 // currently. 238 // currently.
239 StartInstance(); 239 StartInstance();
240 app_info = app_prefs()->GetApp(app_id); 240 app_info = app_prefs()->GetApp(app_id);
241 ASSERT_TRUE(app_info); 241 ASSERT_TRUE(app_info);
242 EXPECT_FALSE(app_info->ready); 242 EXPECT_FALSE(app_info->ready);
243 if (is_pinned()) 243 if (is_pinned())
244 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id)); 244 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
245 else 245 else
246 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id)); 246 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
247 247
248 // Launching non-ready Arc app creates item on shelf and spinning animation. 248 // Launching non-ready Arc app creates item on shelf and spinning animation.
249 arc::LaunchApp(profile(), app_id); 249 arc::LaunchApp(profile(), app_id);
250 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id)); 250 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
251 AppAnimatedWaiter(app_id).Wait(); 251 AppAnimatedWaiter(app_id).Wait();
252 252
253 switch (test_action()) { 253 switch (test_action()) {
254 case TEST_ACTION_START: 254 case TEST_ACTION_START:
255 // Now simulates that Arc is started and app list is refreshed. This 255 // Now simulates that Arc is started and app list is refreshed. This
256 // should stop animation and delete icon from the shelf. 256 // should stop animation and delete icon from the shelf.
257 InstallTestApps(false); 257 InstallTestApps(false);
258 EXPECT_TRUE(chrome_controller() 258 EXPECT_TRUE(chrome_controller()
259 ->GetArcDeferredLauncher() 259 ->GetArcDeferredLauncher()
260 ->GetActiveTime(app_id) 260 ->GetActiveTime(app_id)
261 .is_zero()); 261 .is_zero());
262 if (is_pinned()) 262 if (is_pinned())
263 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id)); 263 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
264 else 264 else
265 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id)); 265 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
266 break; 266 break;
267 case TEST_ACTION_EXIT: 267 case TEST_ACTION_EXIT:
268 // Just exist Chrome. 268 // Just exist Chrome.
269 break; 269 break;
270 case TEST_ACTION_CLOSE: 270 case TEST_ACTION_CLOSE:
271 // Close item during animation. 271 // Close item during animation.
272 { 272 {
273 LauncherItemController* controller = 273 LauncherItemController* controller =
274 chrome_controller()->GetLauncherItemController( 274 chrome_controller()->GetLauncherItemController(
275 shelf_delegate()->GetShelfIDForAppID(app_id)); 275 shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
276 ASSERT_TRUE(controller); 276 ASSERT_TRUE(controller);
277 controller->Close(); 277 controller->Close();
278 EXPECT_TRUE(chrome_controller() 278 EXPECT_TRUE(chrome_controller()
279 ->GetArcDeferredLauncher() 279 ->GetArcDeferredLauncher()
280 ->GetActiveTime(app_id) 280 ->GetActiveTime(app_id)
281 .is_zero()); 281 .is_zero());
282 if (is_pinned()) 282 if (is_pinned())
283 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id)); 283 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
284 else 284 else
285 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id)); 285 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id, app_id));
286 } 286 }
287 break; 287 break;
288 } 288 }
289 } 289 }
290 290
291 INSTANTIATE_TEST_CASE_P(ArcAppDeferredLauncherBrowserTestInstance, 291 INSTANTIATE_TEST_CASE_P(ArcAppDeferredLauncherBrowserTestInstance,
292 ArcAppDeferredLauncherBrowserTest, 292 ArcAppDeferredLauncherBrowserTest,
293 ::testing::ValuesIn(build_test_parameter)); 293 ::testing::ValuesIn(build_test_parameter));
294 294
295 // This tests validates pin state on package update and remove. 295 // This tests validates pin state on package update and remove.
296 IN_PROC_BROWSER_TEST_F(ArcAppLauncherBrowserTest, PinOnPackageUpdateAndRemove) { 296 IN_PROC_BROWSER_TEST_F(ArcAppLauncherBrowserTest, PinOnPackageUpdateAndRemove) {
297 InstallTestApps(true); 297 InstallTestApps(true);
298 298
299 const std::string app_id1 = GetTestApp1Id(); 299 const std::string app_id1 = GetTestApp1Id();
300 const std::string app_id2 = GetTestApp2Id(); 300 const std::string app_id2 = GetTestApp2Id();
301 shelf_delegate()->PinAppWithID(app_id1); 301 shelf_delegate()->PinAppWithID(app_id1);
302 shelf_delegate()->PinAppWithID(app_id2); 302 shelf_delegate()->PinAppWithID(app_id2);
303 const ash::ShelfID shelf_id1_before = 303 const ash::ShelfID shelf_id1_before =
304 shelf_delegate()->GetShelfIDForAppID(app_id1); 304 shelf_delegate()->GetShelfIDForAppID(app_id1, app_id1);
305 EXPECT_TRUE(shelf_id1_before); 305 EXPECT_TRUE(shelf_id1_before);
306 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id2)); 306 EXPECT_TRUE(shelf_delegate()->GetShelfIDForAppID(app_id2, app_id2));
307 307
308 // Package contains only one app. 308 // Package contains only one app.
309 SendPackageUpdated(false); 309 SendPackageUpdated(false);
310 // Second pin should gone. 310 // Second pin should gone.
311 EXPECT_EQ(shelf_id1_before, shelf_delegate()->GetShelfIDForAppID(app_id1)); 311 EXPECT_EQ(shelf_id1_before,
312 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id2)); 312 shelf_delegate()->GetShelfIDForAppID(app_id1, app_id1));
313 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id2, app_id2));
313 314
314 // Package contains two apps. 315 // Package contains two apps.
315 SendPackageUpdated(true); 316 SendPackageUpdated(true);
316 // Second pin should not appear. 317 // Second pin should not appear.
317 EXPECT_EQ(shelf_id1_before, shelf_delegate()->GetShelfIDForAppID(app_id1)); 318 EXPECT_EQ(shelf_id1_before,
318 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id2)); 319 shelf_delegate()->GetShelfIDForAppID(app_id1, app_id1));
320 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id2, app_id2));
319 321
320 // Package removed. 322 // Package removed.
321 SendPackageRemoved(); 323 SendPackageRemoved();
322 // No pin is expected. 324 // No pin is expected.
323 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id1)); 325 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id1, app_id1));
324 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id2)); 326 EXPECT_FALSE(shelf_delegate()->GetShelfIDForAppID(app_id2, app_id2));
325 } 327 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698