| Index: chrome/browser/ui/webui/signin/inline_login_ui.cc
|
| diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
| index 4c9a9fb8e5b3b7daf5e76578393777634b481a2b..d45b25e3cfbafd521b962770a97c953c6403b5bf 100644
|
| --- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
| +++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
| @@ -4,10 +4,16 @@
|
|
|
| #include "chrome/browser/ui/webui/signin/inline_login_ui.h"
|
|
|
| +#include "base/command_line.h"
|
| +#include "base/files/file_util.h"
|
| +#include "base/path_service.h"
|
| +#include "base/strings/string_split.h"
|
| #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
|
| #include "chrome/browser/extensions/tab_helper.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/sessions/session_tab_helper.h"
|
| +#include "chrome/common/chrome_paths.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "chrome/grit/chromium_strings.h"
|
| #include "components/signin/core/common/profile_management_switches.h"
|
| @@ -25,6 +31,28 @@
|
|
|
| namespace {
|
|
|
| +bool HandleTestFileRequestCallback(
|
| + const std::string& path,
|
| + const content::WebUIDataSource::GotDataCallback& callback) {
|
| + std::vector<std::string> url_substr;
|
| + base::SplitString(path, '/', &url_substr);
|
| + if (url_substr.size() != 2 || url_substr[0] != "test")
|
| + return false;
|
| +
|
| + std::string contents;
|
| + base::FilePath test_data_dir;
|
| + PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir);
|
| + if (!base::ReadFileToString(
|
| + test_data_dir.AppendASCII("webui").AppendASCII(url_substr[1]),
|
| + &contents, std::string::npos))
|
| + return false;
|
| +
|
| + base::RefCountedString* ref_contents = new base::RefCountedString();
|
| + ref_contents->data() = contents;
|
| + callback.Run(ref_contents);
|
| + return true;
|
| +}
|
| +
|
| content::WebUIDataSource* CreateWebUIDataSource() {
|
| content::WebUIDataSource* source =
|
| content::WebUIDataSource::Create(chrome::kChromeUIChromeSigninHost);
|
| @@ -35,6 +63,14 @@ content::WebUIDataSource* CreateWebUIDataSource() {
|
| bool is_webview_signin_enabled = switches::IsEnableWebviewBasedSignin();
|
| source->SetDefaultResource(is_webview_signin_enabled ?
|
| IDR_NEW_INLINE_LOGIN_HTML : IDR_INLINE_LOGIN_HTML);
|
| +
|
| + // Only add a filter when runing as test.
|
| + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| + const bool is_running_test = command_line->HasSwitch(::switches::kTestName) ||
|
| + command_line->HasSwitch(::switches::kTestType);
|
| + if (is_running_test)
|
| + source->SetRequestFilter(base::Bind(&HandleTestFileRequestCallback));
|
| +
|
| source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
|
| source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
|
| source->AddResourcePath("gaia_auth_host.js", is_webview_signin_enabled ?
|
|
|