| Index: headless/lib/headless_browser_context_browsertest.cc
|
| diff --git a/headless/lib/headless_browser_context_browsertest.cc b/headless/lib/headless_browser_context_browsertest.cc
|
| index 34490bb628467b24005c0d02bc9b5d8c8b955474..77859f9b22dfca930fac0883baa37a1a0e1d7bb2 100644
|
| --- a/headless/lib/headless_browser_context_browsertest.cc
|
| +++ b/headless/lib/headless_browser_context_browsertest.cc
|
| @@ -4,8 +4,10 @@
|
|
|
| #include <memory>
|
|
|
| +#include "base/files/scoped_temp_dir.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "base/threading/thread_restrictions.h"
|
| #include "content/public/test/browser_test.h"
|
| #include "headless/public/domains/runtime.h"
|
| #include "headless/public/headless_browser.h"
|
| @@ -55,10 +57,7 @@ class HeadlessBrowserContextIsolationTest
|
| void DevToolsTargetReady() override {
|
| if (!web_contents2_) {
|
| browser_context_ = browser()->CreateBrowserContextBuilder().Build();
|
| - web_contents2_ = browser()
|
| - ->CreateWebContentsBuilder()
|
| - .SetBrowserContext(browser_context_.get())
|
| - .Build();
|
| + web_contents2_ = browser_context_->CreateWebContentsBuilder().Build();
|
| web_contents2_->AddObserver(this);
|
| return;
|
| }
|
| @@ -170,10 +169,8 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, ContextProtocolHandler) {
|
| .SetProtocolHandlers(std::move(protocol_handlers))
|
| .Build();
|
| HeadlessWebContents* web_contents =
|
| - browser()
|
| - ->CreateWebContentsBuilder()
|
| + browser_context->CreateWebContentsBuilder()
|
| .SetInitialURL(GURL("http://not-an-actual-domain.tld/hello.html"))
|
| - .SetBrowserContext(browser_context.get())
|
| .Build();
|
| EXPECT_TRUE(WaitForLoad(web_contents));
|
|
|
| @@ -185,12 +182,14 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, ContextProtocolHandler) {
|
| EXPECT_EQ(kResponseBody, inner_html);
|
| web_contents->Close();
|
|
|
| - // Loading the same non-existent page using a tab with the default context
|
| + std::unique_ptr<HeadlessBrowserContext> another_browser_context =
|
| + browser()->CreateBrowserContextBuilder().Build();
|
| +
|
| + // Loading the same non-existent page using a tab with a different context
|
| // should not work since the protocol handler only exists on the custom
|
| // context.
|
| web_contents =
|
| - browser()
|
| - ->CreateWebContentsBuilder()
|
| + another_browser_context->CreateWebContentsBuilder()
|
| .SetInitialURL(GURL("http://not-an-actual-domain.tld/hello.html"))
|
| .Build();
|
| EXPECT_TRUE(WaitForLoad(web_contents));
|
| @@ -202,4 +201,36 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, ContextProtocolHandler) {
|
| web_contents->Close();
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, UserDataDir) {
|
| + // We do not want to bother with posting tasks to create a temp dir.
|
| + // Just allow IO from main thread for now.
|
| + base::ThreadRestrictions::SetIOAllowed(true);
|
| +
|
| + EXPECT_TRUE(embedded_test_server()->Start());
|
| +
|
| + base::ScopedTempDir user_data_dir;
|
| + ASSERT_TRUE(user_data_dir.CreateUniqueTempDir());
|
| +
|
| + // Newly created temp directory should be empty.
|
| + EXPECT_TRUE(base::IsDirectoryEmpty(user_data_dir.path()));
|
| +
|
| + std::unique_ptr<HeadlessBrowserContext> browser_context =
|
| + browser()
|
| + ->CreateBrowserContextBuilder()
|
| + .SetUserDataDir(user_data_dir.path())
|
| + .Build();
|
| +
|
| + HeadlessWebContents* web_contents =
|
| + browser_context->CreateWebContentsBuilder()
|
| + .SetInitialURL(embedded_test_server()->GetURL("/hello.html"))
|
| + .Build();
|
| +
|
| + EXPECT_TRUE(WaitForLoad(web_contents));
|
| +
|
| + // Something should be written to this directory.
|
| + // If it is not the case, more complex page may be needed.
|
| + // ServiceWorkers may be a good option.
|
| + EXPECT_FALSE(base::IsDirectoryEmpty(user_data_dir.path()));
|
| +}
|
| +
|
| } // namespace headless
|
|
|