1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/bind.h"
6#include "content/browser/frame_host/navigation_controller_impl.h"
7#include "content/browser/frame_host/navigation_entry_impl.h"
8#include "content/public/browser/web_contents.h"
9#include "content/public/test/content_browser_test.h"
10#include "content/public/test/content_browser_test_utils.h"
11#include "content/shell/browser/shell.h"
12
13namespace content {
14
15class NavigationControllerBrowserTest : public ContentBrowserTest {
16};
17
18IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, LoadDataWithBaseURL) {
19  const GURL base_url("http://baseurl");
20  const GURL history_url("http://historyurl");
21  const std::string data = "<html><body>foo</body></html>";
22
23  const NavigationController& controller =
24      shell()->web_contents()->GetController();
25  // load data. Blocks until it is done.
26  content::LoadDataWithBaseURL(shell(), history_url, data, base_url);
27
28  // We should use history_url instead of the base_url as the original url of
29  // this navigation entry, because base_url is only used for resolving relative
30  // paths in the data, or enforcing same origin policy.
31  EXPECT_EQ(controller.GetVisibleEntry()->GetOriginalRequestURL(), history_url);
32}
33}  // namespace content
34
35