blob: fb0e63cd3632738e1d5293eb9b29176bc013ffa1 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_INTERACTIVE_UITEST_SUPPORT_H_
#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_INTERACTIVE_UITEST_SUPPORT_H_
#include "base/command_line.h"
#include "base/test/scoped_feature_list.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/permissions/permission_request_manager.h"
#include "ui/message_center/message_center_observer.h"
class MessageCenterChangeObserver {
public:
MessageCenterChangeObserver();
MessageCenterChangeObserver(const MessageCenterChangeObserver&) = delete;
MessageCenterChangeObserver& operator=(const MessageCenterChangeObserver&) =
delete;
~MessageCenterChangeObserver();
bool Wait();
private:
class Impl;
std::unique_ptr<Impl> impl_;
};
class TestMessageCenterObserver : public message_center::MessageCenterObserver {
public:
TestMessageCenterObserver() = default;
TestMessageCenterObserver(const TestMessageCenterObserver&) = delete;
TestMessageCenterObserver& operator=(const TestMessageCenterObserver&) =
delete;
// MessageCenterObserver:
void OnNotificationDisplayed(
const std::string& notification_id,
const message_center::DisplaySource source) override;
const std::string& last_displayed_id() const;
private:
std::string last_displayed_id_;
};
class NotificationsTest : public InProcessBrowserTest {
public:
NotificationsTest();
protected:
int GetNotificationCount();
int GetNotificationPopupCount();
void CloseBrowserWindow(Browser* browser);
void CrashTab(Browser* browser, int index);
void DenyOrigin(const GURL& origin);
void AllowOrigin(const GURL& origin);
void AllowAllOrigins();
void SetDefaultContentSetting(ContentSetting setting);
void DropOriginPreference(const GURL& origin);
std::string CreateNotification(Browser* browser,
bool wait_for_new_balloon,
const char* icon,
const char* title,
const char* body,
const char* replace_id,
const char* onclick = "");
std::string CreateSimpleNotification(Browser* browser,
bool wait_for_new_balloon);
bool RequestAndAcceptPermission(Browser* browser);
bool RequestAndDenyPermission(Browser* browser);
bool RequestAndDismissPermission(Browser* browser);
bool RequestPermissionAndWait(Browser* browser);
std::string QueryPermissionStatus(Browser* browser);
bool CancelNotification(const char* notification_id, Browser* browser);
void GetDisabledContentSettings(ContentSettingsForOneType* settings);
bool CheckOriginInSetting(const ContentSettingsForOneType& settings,
const GURL& origin);
GURL GetTestPageURLForFile(const std::string& file) const;
GURL GetTestPageURL() const;
content::WebContents* GetActiveWebContents(Browser* browser);
private:
std::string RequestAndRespondToPermission(
Browser* browser,
permissions::PermissionRequestManager::AutoResponseType bubble_response);
base::test::ScopedFeatureList feature_list_;
};
class NotificationsTestWithPermissionsEmbargo : public NotificationsTest {
public:
NotificationsTestWithPermissionsEmbargo();
private:
base::test::ScopedFeatureList feature_list_;
};
#endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_INTERACTIVE_UITEST_SUPPORT_H_