chromium/ash/ambient/ui/ambient_video_view_unittest.cc

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/ambient/ui/ambient_video_view.h"

#include "ash/ambient/ambient_controller.h"
#include "ash/ambient/test/ambient_ash_test_base.h"
#include "ash/ambient/ui/ambient_view_ids.h"
#include "ash/test/test_ash_web_view.h"
#include "ash/test/test_ash_web_view_factory.h"
#include "base/files/file_path.h"
#include "base/test/task_environment.h"
#include "net/base/url_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"

namespace ash {
namespace {

using ::testing::Eq;
using ::testing::NotNull;

using AmbientVideoViewTest = AmbientAshTestBase;

TEST_F(AmbientVideoViewTest, NavigatesToCorrectURL) {
  AmbientVideoView view("video.webm", base::FilePath("/path/to/html"),
                        AmbientVideo::kClouds,
                        ambient_controller()->ambient_view_delegate());
  const TestAshWebView* web_view = static_cast<const TestAshWebView*>(
      view.GetViewByID(kAmbientVideoWebView));
  ASSERT_THAT(web_view, NotNull());
  EXPECT_FALSE(web_view->init_params_for_testing().enable_wake_locks);
  EXPECT_TRUE(web_view->current_url().SchemeIsFile());
  EXPECT_THAT(web_view->current_url().path(), Eq("/path/to/html"));
  std::string video_file_requested;
  ASSERT_TRUE(net::GetValueForKeyInQuery(web_view->current_url(), "video_file",
                                         &video_file_requested));
  EXPECT_THAT(video_file_requested, Eq("video.webm"));
}

}  // namespace
}  // namespace ash