chromium/chrome/browser/media/media_session_browsertest.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 "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/media_session.h"
#include "content/public/browser/media_session_client.h"
#include "content/public/browser/media_session_service.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "media/base/media_switches.h"
#include "services/media_session/public/cpp/test/mock_media_session.h"

class MediaSessionBrowserTest : public InProcessBrowserTest {};

IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
                       MediaSessionInfoDontHideMetadataByDefault) {}

IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
                       MediaSessionInfoHideMetadataIfInIncognito) {}

// We hide the media metadata from CrOS' media controls by replacing the
// metadata in the MediaSessionImpl with some placeholder metadata. These
// changes are gated to only affect ChromeOS, hence why the testing for this is
// also ChromeOS only.
#if BUILDFLAG(IS_CHROMEOS)
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
                       MediaSessionInfoIsHiddenInCrOSIncognito) {
  Browser* browser = CreateIncognitoBrowser();

  media_session::test::MockMediaSessionMojoObserver observer(
      *content::MediaSession::Get(
          browser->tab_strip_model()->GetActiveWebContents()));

  PlayVideoWithMetadata(browser);

  observer.WaitForExpectedMetadata(GetExpectedHiddenMetadata());
}
#else  // !BUILDFLAG(IS_CHROMEOS)
IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
                       MediaSessionInfoIsNotHiddenInNonCrOSIncognito) {}
#endif