1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_util.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string_util.h"
972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h"
1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h"
1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "webkit/glue/webkit_glue.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "webkit/tools/test_shell/test_shell_test.h"
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing WebKit::WebDataSource;
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing WebKit::WebFrame;
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing WebKit::WebString;
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing WebKit::WebURL;
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing WebKit::WebVector;
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef TestShellTest IFrameRedirectTest;
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests that loading a page in an iframe from javascript results in
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// a redirect from about:blank.
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(IFrameRedirectTest, Test) {
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  FilePath iframes_data_dir_ = data_dir_;
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iframes_data_dir_ = iframes_data_dir_.AppendASCII("test_shell");
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iframes_data_dir_ = iframes_data_dir_.AppendASCII("iframe_redirect");
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(file_util::PathExists(iframes_data_dir_));
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  GURL test_url = GetTestURL(iframes_data_dir_, "main.html");
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  test_shell_->LoadURL(test_url);
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  test_shell_->WaitTestFinished();
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WebFrame* iframe =
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      test_shell_->webView()->findFrameByName(WebString::fromUTF8("ifr"));
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(iframe != NULL);
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WebDataSource* iframe_ds = iframe->dataSource();
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(iframe_ds != NULL);
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WebVector<WebURL> redirects;
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iframe_ds->redirectChain(redirects);
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_FALSE(redirects.isEmpty());
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(GURL(redirects[0]) == GURL("about:blank"));
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
49