chromium/chrome/browser/ui/views/extensions/extension_dialog_bounds_browsertest.cc

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

#include <string>

#include "chrome/browser/ash/accessibility/accessibility_manager.h"
#include "chrome/browser/ash/accessibility/magnification_manager.h"
#include "chrome/browser/extensions/component_loader.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "content/public/test/browser_test.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/test_extension_registry_observer.h"

namespace {

using ::ash::MagnificationManager;

class ExtensionDialogBoundsTest
    : public SupportsTestDialog<extensions::ExtensionBrowserTest> {
 public:
  ExtensionDialogBoundsTest() = default;

  ExtensionDialogBoundsTest(const ExtensionDialogBoundsTest&) = delete;
  ExtensionDialogBoundsTest& operator=(const ExtensionDialogBoundsTest&) =
      delete;

  ~ExtensionDialogBoundsTest() override = default;

  void SetUp() override {
    extensions::ComponentLoader::EnableBackgroundExtensionsForTesting();
    extensions::ExtensionBrowserTest::SetUp();
  }

  // DialogBrowserTest:
  void ShowUi(const std::string& name) override { browser()->OpenFile(); }

  void EnableDockedMagnifier() const {
    extensions::TestExtensionRegistryObserver registry_observer(
        extensions::ExtensionRegistry::Get(
            ash::AccessibilityManager::Get()->profile()));
    MagnificationManager::Get()->SetDockedMagnifierEnabled(true);
    registry_observer.WaitForExtensionLoaded();
    ASSERT_TRUE(MagnificationManager::Get()->IsDockedMagnifierEnabled());
  }
};

// Note that the underscores in the test names below are important as whatever
// comes after the underscore is used as the parameter for the ShowUi() above.
// TODO(crbug.com/40283636): File dialog no longer uses deprecated extension
// dialog. Thus, move this test to SelectFileDialogExtensionBrowserTest and
// remove this file.
IN_PROC_BROWSER_TEST_F(ExtensionDialogBoundsTest, Test_OpenFileDialog) {
  EnableDockedMagnifier();
  ShowAndVerifyUi();
}

}  // namespace