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