10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file. 40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/bind.h" 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/browser/frame_host/navigation_controller_impl.h" 70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/browser/frame_host/navigation_entry_impl.h" 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/public/browser/web_contents.h" 90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/public/test/content_browser_test.h" 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/public/test/content_browser_test_utils.h" 110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/shell/browser/shell.h" 120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace content { 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass NavigationControllerBrowserTest : public ContentBrowserTest { 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}; 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 180529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochIN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, LoadDataWithBaseURL) { 190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const GURL base_url("http://baseurl"); 200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const GURL history_url("http://historyurl"); 210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const std::string data = "<html><body>foo</body></html>"; 220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const NavigationController& controller = 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch shell()->web_contents()->GetController(); 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // load data. Blocks until it is done. 260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch content::LoadDataWithBaseURL(shell(), history_url, data, base_url); 270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // We should use history_url instead of the base_url as the original url of 290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // this navigation entry, because base_url is only used for resolving relative 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // paths in the data, or enforcing same origin policy. 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch EXPECT_EQ(controller.GetVisibleEntry()->GetOriginalRequestURL(), history_url); 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} // namespace content 340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 35