// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/path_service.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/test/content_browser_test.h" #include "content/public/test/content_browser_test_utils.h" #include "content/shell/browser/shell.h" #include "content/test/content_browser_test_utils_internal.h" namespace content { // This browser test is aimed towards exercising the FileAPI bindings and // the actual implementation that lives in the browser side. class FileAPIBrowserTest : public ContentBrowserTest { public: FileAPIBrowserTest() {} }; IN_PROC_BROWSER_TEST_F(FileAPIBrowserTest, FileInputChooserParams) { base::FilePath file; EXPECT_TRUE(PathService::Get(base::DIR_TEMP, &file)); file = file.AppendASCII("bar"); NavigateToURL(shell(), GetTestUrl(".", "file_input.html")); // Click on the element to launch the file upload picker. { std::unique_ptr delegate( new FileChooserDelegate(file)); shell()->web_contents()->SetDelegate(delegate.get()); EXPECT_TRUE(ExecuteScript(shell(), "document.getElementById('fileinput').click();")); EXPECT_TRUE(delegate->file_chosen()); EXPECT_TRUE(delegate->params().default_file_name.empty()); } // Click again, to verify what state was maintained and what was not. // The renderer is expected not to specify a default file name; it's up to // the browser to remember the last selected directory in the profile. { std::unique_ptr delegate( new FileChooserDelegate(file)); shell()->web_contents()->SetDelegate(delegate.get()); EXPECT_TRUE(ExecuteScript(shell(), "document.getElementById('fileinput').click();")); EXPECT_TRUE(delegate->file_chosen()); EXPECT_TRUE(delegate->params().default_file_name.empty()); } } } // namespace content