172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/tabs/tab_renderer_gtk.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef TabRendererGtk::LoadingAnimation LoadingAnimation; 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kTestLoadingAnimationFrameCount = 10; 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kTestWaitingAnimationFrameCount = 40; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kTestWaitingToLoadingFrameCountRatio = 4; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst LoadingAnimation::Data kMockAnimationData = 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LoadingAnimation::Data(kTestLoadingAnimationFrameCount, 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch kTestWaitingAnimationFrameCount, 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch kTestWaitingToLoadingFrameCountRatio); 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(LoadingAnimationTest, InitialState) { 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LoadingAnimation loading_animation(kMockAnimationData); 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(TabRendererGtk::ANIMATION_NONE, 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_state()); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, loading_animation.animation_frame()); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(LoadingAnimationTest, AdvanceWaitingFrames) { 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LoadingAnimation loading_animation(kMockAnimationData); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_WAITING); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING, 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_state()); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, loading_animation.animation_frame()); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_WAITING); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING, 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_state()); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2, loading_animation.animation_frame()); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int i = 2; i < kTestWaitingAnimationFrameCount - 1; ++i) { 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.ValidateLoadingAnimation( 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TabRendererGtk::ANIMATION_WAITING); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING, 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_state()); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(kTestWaitingAnimationFrameCount - 1, 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_frame()); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_WAITING); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING, 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_state()); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, loading_animation.animation_frame()) << 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The animation frame should have wrapped around to 0."; 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(LoadingAnimationTest, AdvanceFromWaitingToLoading) { 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch LoadingAnimation loading_animation(kMockAnimationData); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int i = 0; i < 2 * kTestWaitingToLoadingFrameCountRatio; ++i) { 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.ValidateLoadingAnimation( 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TabRendererGtk::ANIMATION_WAITING); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING, 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_state()); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2 * kTestWaitingToLoadingFrameCountRatio, 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_frame()); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_LOADING); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(TabRendererGtk::ANIMATION_LOADING, 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_state()); 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(kTestLoadingAnimationFrameCount - 1, 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch loading_animation.animation_frame()); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 75