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..4daebdece819c11d31173a9dc0099223935eaf95 100644 |
--- a/chrome/browser/ui/webui/signin/inline_login_ui.cc |
+++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc |
@@ -4,10 +4,14 @@ |
#include "chrome/browser/ui/webui/signin/inline_login_ui.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/url_constants.h" |
#include "chrome/grit/chromium_strings.h" |
#include "components/signin/core/common/profile_management_switches.h" |
@@ -25,6 +29,29 @@ |
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 +62,7 @@ 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); |
+ source->SetRequestFilter(base::Bind(&HandleTestFileRequestCallback)); |
xiyuan
2015/03/18 16:11:04
We should only add this when the code runs as test
Xi Han
2015/03/18 20:36:26
That is also what my concern is. Thanks!
|
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 ? |