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