#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include <stddef.h>
#include <memory>
#include <utility>
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/path_service.h"
#include "base/run_loop.h"
#include "base/stl_util.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/values.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/extensions/extension_action_test_helper.h"
#include "chrome/browser/ui/javascript_dialogs/chrome_javascript_app_modal_dialog_view_factory.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/guest_view/browser/test_guest_view_manager.h"
#include "components/javascript_dialogs/app_modal_dialog_manager.h"
#include "components/permissions/permission_request_manager.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_features.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/download_test_observer.h"
#include "content/public/test/test_navigation_observer.h"
#include "content/public/test/test_utils.h"
#include "extensions/browser/app_window/app_window.h"
#include "extensions/browser/app_window/app_window_registry.h"
#include "extensions/browser/browsertest_util.h"
#include "extensions/browser/process_manager.h"
#include "extensions/common/manifest_handlers/background_info.h"
#include "extensions/common/manifest_handlers/web_accessible_resources_info.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/test/extension_background_page_waiter.h"
#include "extensions/test/test_extension_dir.h"
#include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "url/origin.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "ash/constants/ash_switches.h"
#include "chrome/browser/ash/profiles/profile_helper.h"
#endif
namespace extensions {
namespace {
GURL CreateBlobURL(content::RenderFrameHost* frame,
const std::string& content) { … }
GURL CreateFileSystemURL(content::RenderFrameHost* frame,
const std::string& content) { … }
std::string GetTextContent(content::RenderFrameHost* frame) { … }
void VerifyPostMessageToOpener(content::RenderFrameHost* sender,
content::RenderFrameHost* opener) { … }
class NavigationCompletedObserver : public content::WebContentsObserver { … };
class ProcessManagerBrowserTest : public ExtensionBrowserTest { … };
class DefaultProfileExtensionBrowserTest : public ExtensionBrowserTest { … };
}
IN_PROC_BROWSER_TEST_F(DefaultProfileExtensionBrowserTest, NoExtensionHosts) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
ExtensionHostCreation) { … }
#if BUILDFLAG(IS_CHROMEOS_LACROS)
#define MAYBE_PopupHostCreation …
#else
#define MAYBE_PopupHostCreation …
#endif
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, MAYBE_PopupHostCreation) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, HttpHostMatchingExtensionId) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, NoBackgroundPage) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
DISABLED_FrameClassification) { … }
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
#define MAYBE_KeepaliveOnNetworkRequest …
#else
#define MAYBE_KeepaliveOnNetworkRequest …
#endif
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
MAYBE_KeepaliveOnNetworkRequest) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, ExtensionProcessReuse) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
NestedURLNavigationsToExtensionBlocked) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
BlobURLDownloadsToExtensionAllowed) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
NestedURLNavigationsToExtensionBlockedInSubframe) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
NestedURLNavigationsToExtensionAllowed) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
DISABLED_NestedURLNavigationsToAppBlocked) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
NestedURLNavigationsViaProxyBlocked) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
DISABLED_NestedURLNavigationsViaNoOpenerPopupBlocked) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
ServerRedirectToNonWebAccessibleResource) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
CrossExtensionEmbeddingOfWebAccessibleResources) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
WebPopupFromExtensionMainFrameHasValidOpener) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
WebPopupFromExtensionSubframeHasValidOpener) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
ExtensionFrameNavigatesToParentSiteInstance) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
WebSubframeOnExtensionDoesNotReuseExistingProcess) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, HostedAppFilesAccess) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, HostedAppAlerts) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, GetWorkerContextId) { … }
IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest,
ActiveServiceWorkerKeepalivesAreTracked) { … }
}