diff options
author | samuong <samuong@chromium.org> | 2015-08-18 10:51:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-18 17:52:20 +0000 |
commit | a70c817c3fedc624e1957de9e7b9f43de1ebe735 (patch) | |
tree | 8c5c791b1702cf6c15f10e6539a314e1bcfb78c7 | |
parent | 6acb99110c84e4811b7cba0cb17abd71b7734a5d (diff) | |
download | chromium_src-a70c817c3fedc624e1957de9e7b9f43de1ebe735.zip chromium_src-a70c817c3fedc624e1957de9e7b9f43de1ebe735.tar.gz chromium_src-a70c817c3fedc624e1957de9e7b9f43de1ebe735.tar.bz2 |
[chromedriver] Use about:blank for dummy frames, to avoid violating CSP.
Using a data: URL makes it easier to detect, but causes CSP errors when we're
navigating to a chrome:// URL.
BUG=
TBR=stgao@chromium.org
Review URL: https://codereview.chromium.org/1294273002
Cr-Commit-Position: refs/heads/master@{#343956}
-rw-r--r-- | chrome/test/chromedriver/chrome/navigation_tracker.cc | 11 | ||||
-rw-r--r-- | chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc | 1 |
2 files changed, 8 insertions, 4 deletions
diff --git a/chrome/test/chromedriver/chrome/navigation_tracker.cc b/chrome/test/chromedriver/chrome/navigation_tracker.cc index 3b7b17f..9275949 100644 --- a/chrome/test/chromedriver/chrome/navigation_tracker.cc +++ b/chrome/test/chromedriver/chrome/navigation_tracker.cc @@ -12,9 +12,8 @@ namespace { -const std::string kDummyFrameUrl = - "data:text/html,<!--chromedriver dummy frame-->"; - +const std::string kDummyFrameName = "chromedriver dummy frame"; +const std::string kDummyFrameUrl = "about:blank"; const std::string kUnreachableWebDataURL = "data:text/html,chromewebdata"; } // namespace @@ -74,6 +73,7 @@ Status NavigationTracker::IsPendingNavigation(const std::string& frame_id, " document.readyState == 'interactive';" "if (isLoaded) {" " var frame = document.createElement('iframe');" + " frame.name = '" + kDummyFrameName + "';" " frame.src = '" + kDummyFrameUrl + "';" " document.body.appendChild(frame);" " window.setTimeout(function() {" @@ -206,10 +206,13 @@ Status NavigationTracker::OnEvent(DevToolsClient* client, // If a child frame just navigated, check if it is the dummy frame that // was attached by IsPendingNavigation(). We don't want to track execution // contexts created and destroyed for this dummy frame. + std::string name; + if (!params.GetString("frame.name", &name)) + return Status(kUnknownError, "missing or invalid 'frame.name'"); std::string url; if (!params.GetString("frame.url", &url)) return Status(kUnknownError, "missing or invalid 'frame.url'"); - if (url == kDummyFrameUrl) + if (name == kDummyFrameName && url == kDummyFrameUrl) params.GetString("frame.id", &dummy_frame_id_); } } else if (method == "Runtime.executionContextsCleared") { diff --git a/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc b/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc index f47d5d3..922c6a8 100644 --- a/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc +++ b/chrome/test/chromedriver/chrome/navigation_tracker_unittest.cc @@ -258,6 +258,7 @@ TEST(NavigationTracker, DiscardScheduledNavigationsOnMainFrameCommit) { base::DictionaryValue params_navigated; params_navigated.SetString("frame.parentId", "something"); + params_navigated.SetString("frame.name", std::string()); params_navigated.SetString("frame.url", "http://abc.xyz"); ASSERT_EQ( kOk, |