Commit 43bc9bf1 authored by phillis's avatar phillis Committed by Commit Bot

DPWA: add test for web_app::WebAppUninstallDialogDelegateView

This is a reland for https://chromium-review.googlesource.com/c/chromium/src/+/2198369.
It adds test for the flow of initiating uninstall and accept/cancel
the uninstall action. It also fixes a bug that the autoconfirm for testing is called
before the widget is instantiated by
|constrained_window::CreateBrowserModalDialogViews|

Bug: 1073258
Change-Id: Id0f1fff4bdaa4901b50b3d3c12271d54ad1c2e41
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2382952
Commit-Queue: Phillis Tang <phillis@chromium.org>
Reviewed-by: default avatarAlexey Baskakov <loyso@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804852}
parent ddda90f3
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <memory> #include <memory>
#include "base/barrier_closure.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/optional.h" #include "base/optional.h"
...@@ -16,11 +17,13 @@ ...@@ -16,11 +17,13 @@
#include "chrome/browser/ui/test/test_browser_dialog.h" #include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h" #include "chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h"
#include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h" #include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h"
#include "chrome/browser/web_applications/test/web_app_icon_test_utils.h"
#include "chrome/common/web_application_info.h" #include "chrome/common/web_application_info.h"
#include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/in_process_browser_test.h"
#include "content/public/test/browser_test.h" #include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h" #include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h" #include "content/public/test/test_utils.h"
#include "extensions/browser/extension_dialog_auto_confirm.h"
using web_app::AppId; using web_app::AppId;
...@@ -91,6 +94,55 @@ IN_PROC_BROWSER_TEST_F(WebAppUninstallDialogViewBrowserTest, ...@@ -91,6 +94,55 @@ IN_PROC_BROWSER_TEST_F(WebAppUninstallDialogViewBrowserTest,
EXPECT_FALSE(was_uninstalled); EXPECT_FALSE(was_uninstalled);
} }
IN_PROC_BROWSER_TEST_F(WebAppUninstallDialogViewBrowserTest,
TestDialogUserFlow_Cancel) {
extensions::ScopedTestDialogAutoConfirm auto_confirm(
extensions::ScopedTestDialogAutoConfirm::CANCEL);
AppId app_id = InstallTestWebApp(browser()->profile());
WebAppUninstallDialogViews dialog(browser()->profile(),
browser()->window()->GetNativeWindow());
base::RunLoop run_loop;
auto callback =
base::BarrierClosure(/*num_closures=*/2, run_loop.QuitClosure());
bool was_uninstalled = false;
dialog.SetDialogShownCallbackForTesting(callback);
dialog.ConfirmUninstall(app_id,
base::BindLambdaForTesting([&](bool uninstalled) {
was_uninstalled = uninstalled;
callback.Run();
}));
run_loop.Run();
EXPECT_FALSE(was_uninstalled);
}
IN_PROC_BROWSER_TEST_F(WebAppUninstallDialogViewBrowserTest,
TestDialogUserFlow_Accept) {
extensions::ScopedTestDialogAutoConfirm auto_confirm(
extensions::ScopedTestDialogAutoConfirm::ACCEPT_AND_OPTION);
AppId app_id = InstallTestWebApp(browser()->profile());
WebAppUninstallDialogViews dialog(browser()->profile(),
browser()->window()->GetNativeWindow());
base::RunLoop run_loop;
auto callback =
base::BarrierClosure(/*num_closures=*/2, run_loop.QuitClosure());
bool was_uninstalled = false;
dialog.SetDialogShownCallbackForTesting(callback);
dialog.ConfirmUninstall(app_id,
base::BindLambdaForTesting([&](bool uninstalled) {
was_uninstalled = uninstalled;
callback.Run();
}));
run_loop.Run();
EXPECT_TRUE(was_uninstalled);
}
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
// Test that we don't crash when uninstalling a web app from a web app window in // Test that we don't crash when uninstalling a web app from a web app window in
// Ash. Context: crbug.com/825554 // Ash. Context: crbug.com/825554
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment