summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorwtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-20 19:17:58 +0000
committerwtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-20 19:17:58 +0000
commitfaf9cd6e0a9a3b8d6466c547cb9314c6af8dcdad (patch)
tree9a9ab40c4ddd6a08b717bd48b93342faf66dd92f /chrome
parent7ceeba70872aab6ac66a1043c9f1587b12fc6710 (diff)
downloadchromium_src-faf9cd6e0a9a3b8d6466c547cb9314c6af8dcdad.zip
chromium_src-faf9cd6e0a9a3b8d6466c547cb9314c6af8dcdad.tar.gz
chromium_src-faf9cd6e0a9a3b8d6466c547cb9314c6af8dcdad.tar.bz2
Use the same code to handle both overridable and fatal
certificate errors. The only difference is that the SSL interstial page for fatal certificate errors has only one button ("Back"). Copy ssl_roadpage.html to ssl_error.html, remove the "proceed" button, and rename the "exit" button to "back". The local variable |html| in SSLBlockingPage::GetHTMLContents should not be declared as static. Remove SSLPolicy::ShowErrorPage and RenderViewHost::LoadAlternateHTMLString. R=abarth,jcivelli BUG=41360 TEST=Type https://test-ssev.verisign.com:2443/test-SSEV-revoked-verisign.html in the location bar and hit Enter. The location bar should display that URL with a broken certificate error status, and the Back button on the SSL interstitial page should work. Review URL: http://codereview.chromium.org/1613016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45060 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc9
-rw-r--r--chrome/browser/renderer_host/render_view_host.h12
-rw-r--r--chrome/browser/security/resources/ssl_error.html45
-rw-r--r--chrome/browser/ssl/ssl_blocking_page.cc31
-rw-r--r--chrome/browser/ssl/ssl_blocking_page.h6
-rw-r--r--chrome/browser/ssl/ssl_policy.cc64
-rw-r--r--chrome/browser/ssl/ssl_policy.h18
-rw-r--r--chrome/common/render_messages_internal.h8
-rw-r--r--chrome/renderer/render_view.cc22
-rw-r--r--chrome/renderer/render_view.h5
-rw-r--r--chrome/renderer/render_view_unittest.cc21
11 files changed, 64 insertions, 177 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 9eced8f..4e68666 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -267,15 +267,6 @@ void RenderViewHost::NavigateToURL(const GURL& url) {
Navigate(params);
}
-void RenderViewHost::LoadAlternateHTMLString(const std::string& html_text,
- bool new_navigation,
- const GURL& display_url,
- const std::string& security_info) {
- Send(new ViewMsg_LoadAlternateHTMLText(routing_id(), html_text,
- new_navigation, display_url,
- security_info));
-}
-
void RenderViewHost::SetNavigationsSuspended(bool suspend) {
// This should only be called to toggle the state.
DCHECK(navigations_suspended_ != suspend);
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index fb86e94..b971679 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -124,18 +124,6 @@ class RenderViewHost : public RenderWidgetHost {
// Load the specified URL, this is a shortcut for Navigate().
void NavigateToURL(const GURL& url);
- // Loads the specified html (must be UTF8) in the main frame. If
- // |new_navigation| is true, it simulates a navigation to |display_url|.
- // |security_info| is the security state that will be reported when the page
- // load commits. It is useful for mocking SSL errors. Provide an empty
- // string if no secure connection state should be simulated.
- // Note that if |new_navigation| is false, |display_url| and |security_info|
- // are not used.
- void LoadAlternateHTMLString(const std::string& html_text,
- bool new_navigation,
- const GURL& display_url,
- const std::string& security_info);
-
// Returns whether navigation messages are currently suspended for this
// RenderViewHost. Only true during a cross-site navigation, while waiting
// for the onbeforeunload handler.
diff --git a/chrome/browser/security/resources/ssl_error.html b/chrome/browser/security/resources/ssl_error.html
index c7480c2..6326156 100644
--- a/chrome/browser/security/resources/ssl_error.html
+++ b/chrome/browser/security/resources/ssl_error.html
@@ -46,45 +46,52 @@ html[dir='rtl'] .box {
.main {
margin:0px 80px 0px;
}
+
.submission {
- margin:5px 5px 15px 0px;
+ margin:15px 5px 15px 0px;
padding:0px;
}
input {
margin:0px;
}
-
+.helpbutton {
+ float:right;
+}
.example {
margin:30px 80px 0px;
border-top:1px solid #ccc;
- padding-top:6pt;
+ padding-top:6px;
}
.moreinfotitle {
margin-left:5px;
margin-right:5px;
}
</style>
+
<script>
+ function $(o) {return document.getElementById(o);}
+
+ function sendCommand(cmd) {
+ window.domAutomationController.setAutomationId(1);
+ window.domAutomationController.send(cmd);
+ }
+
function toggleMoreInfo(collapse) {
- var div_to_hide;
- var div_to_show;
if (collapse) {
- div_to_hide = document.getElementById("more_info_long");
- div_to_show = document.getElementById("more_info_short");
+ $("more_info_long").style.display = "none";
+ $("more_info_short").style.display = "block";
} else {
- div_to_hide = document.getElementById("more_info_short");
- div_to_show = document.getElementById("more_info_long");
+ $("more_info_long").style.display = "block";
+ $("more_info_short").style.display = "none";
}
- div_to_hide.style.display = "none";
- div_to_show.style.display = "block";
}
function setDirectionSensitiveImages() {
if (document.documentElement.dir == 'rtl') {
- document.getElementById("twisty_closed_rtl").style.display = "inline";
- } else {
- document.getElementById("twisty_closed").style.display = "inline";
- }
- }
+ $("twisty_closed_rtl").style.display = "inline";
+ } else {
+ $("twisty_closed").style.display = "inline";
+ }
+ }
</script>
</head>
<body oncontextmenu="return false;">
@@ -92,7 +99,7 @@ input {
document.addEventListener('DOMContentLoaded', setDirectionSensitiveImages);
</script>
<div class="background"><img src="ssl_roadblock_background.png" width="100%" height="100%" alt="background" onmousedown="return false;"></div>
-<table width="100%" cellspacing="0" cellpadding="0">
+<table width="100%" cellspacing="0" cellpadding="0">
<td class="cell" valign="middle" align="center">
<div class="box">
<div class="icon"><img src="ssl_roadblock_icon.png" alt="SSL Error Icon" onmousedown="return false;"></div>
@@ -100,7 +107,7 @@ document.addEventListener('DOMContentLoaded', setDirectionSensitiveImages);
<div class="main" i18n-values=".innerHTML:description"></div>
<div class="main">
<form class="submission">
- <input type="button" i18n-values="value:back" name="back" onClick="history.back()">
+ <input type="button" i18n-values="value:back" name="back" onClick="sendCommand(0);">
</form>
</div>
<div class="example" id="more_info_short">
@@ -113,7 +120,7 @@ document.addEventListener('DOMContentLoaded', setDirectionSensitiveImages);
// the inlined version will just end up with that path string rather
// than the inlined image.
-->
- <a href="#" onclick="toggleMoreInfo(false); return false;" onmousedown="return false;"><img id="twisty_closed" src="twisty_closed.png" border="0" style="display:none"><img id="twisty_closed_rtl" src="twisty_closed_rtl.png" border="0" style="display:none"><span i18n-content="moreInfoTitle" class="moreinfotitle"></span></a>
+ <a href="#" onclick="toggleMoreInfo(false); return false;" onmousedown="return false;"><img id="twisty_closed" src="twisty_closed.png" border="0" style="display:none"><img id="twisty_closed_rtl" src="twisty_closed_rtl.png" border="0" style="display:none"><span i18n-content="moreInfoTitle" class="moreinfotitle"></span></a>
</div>
<div class="example" id="more_info_long" style="display:none;">
<a href="#" onclick="toggleMoreInfo(true); return false;" onmousedown="return false;"><img src="twisty_open.png" border="0"><span i18n-content="moreInfoTitle" class="moreinfotitle"></span></a>
diff --git a/chrome/browser/ssl/ssl_blocking_page.cc b/chrome/browser/ssl/ssl_blocking_page.cc
index 904c083..aa3df31 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -45,11 +45,13 @@ void RecordSSLBlockingPageStats(SSLBlockingPageEvent event) {
// Note that we always create a navigation entry with SSL errors.
// No error happening loading a sub-resource triggers an interstitial so far.
SSLBlockingPage::SSLBlockingPage(SSLCertErrorHandler* handler,
- Delegate* delegate)
+ Delegate* delegate,
+ bool overridable)
: InterstitialPage(handler->GetTabContents(), true, handler->request_url()),
handler_(handler),
delegate_(delegate),
- delegate_has_been_notified_(false) {
+ delegate_has_been_notified_(false),
+ overridable_(overridable) {
RecordSSLBlockingPageStats(SHOW);
}
@@ -65,8 +67,6 @@ std::string SSLBlockingPage::GetHTMLContents() {
// Let's build the html error page.
DictionaryValue strings;
SSLErrorInfo error_info = delegate_->GetSSLErrorInfo(handler_);
- strings.SetString(L"title",
- l10n_util::GetString(IDS_SSL_BLOCKING_PAGE_TITLE));
strings.SetString(L"headLine", error_info.title());
strings.SetString(L"description", error_info.details());
@@ -74,16 +74,25 @@ std::string SSLBlockingPage::GetHTMLContents() {
l10n_util::GetString(IDS_CERT_ERROR_EXTRA_INFO_TITLE));
SetExtraInfo(&strings, error_info.extra_information());
- strings.SetString(L"proceed",
- l10n_util::GetString(IDS_SSL_BLOCKING_PAGE_PROCEED));
- strings.SetString(L"exit",
- l10n_util::GetString(IDS_SSL_BLOCKING_PAGE_EXIT));
+ int resource_id;
+ if (overridable_) {
+ resource_id = IDR_SSL_ROAD_BLOCK_HTML;
+ strings.SetString(L"title",
+ l10n_util::GetString(IDS_SSL_BLOCKING_PAGE_TITLE));
+ strings.SetString(L"proceed",
+ l10n_util::GetString(IDS_SSL_BLOCKING_PAGE_PROCEED));
+ strings.SetString(L"exit",
+ l10n_util::GetString(IDS_SSL_BLOCKING_PAGE_EXIT));
+ } else {
+ resource_id = IDR_SSL_ERROR_HTML;
+ strings.SetString(L"title", l10n_util::GetString(IDS_SSL_ERROR_PAGE_TITLE));
+ strings.SetString(L"back", l10n_util::GetString(IDS_SSL_ERROR_PAGE_BACK));
+ }
strings.SetString(L"textdirection", base::i18n::IsRTL() ? L"rtl" : L"ltr");
- static const base::StringPiece html(
- ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_SSL_ROAD_BLOCK_HTML));
+ base::StringPiece html(
+ ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id));
return jstemplate_builder::GetI18nTemplateHtml(html, &strings);
}
diff --git a/chrome/browser/ssl/ssl_blocking_page.h b/chrome/browser/ssl/ssl_blocking_page.h
index 8ef9b28..dd282ad 100644
--- a/chrome/browser/ssl/ssl_blocking_page.h
+++ b/chrome/browser/ssl/ssl_blocking_page.h
@@ -33,7 +33,8 @@ class SSLBlockingPage : public InterstitialPage {
virtual void OnAllowCertificate(SSLCertErrorHandler* handler) = 0;
};
- SSLBlockingPage(SSLCertErrorHandler* handler, Delegate* delegate);
+ SSLBlockingPage(SSLCertErrorHandler* handler, Delegate* delegate,
+ bool overridable);
virtual ~SSLBlockingPage();
// A method that sets strings in the specified dictionary from the passed
@@ -66,6 +67,9 @@ class SSLBlockingPage : public InterstitialPage {
// A flag to indicate if we've notified |delegate_| of the user's decision.
bool delegate_has_been_notified_;
+ // Can the user override the certificate error?
+ bool overridable_;
+
DISALLOW_COPY_AND_ASSIGN(SSLBlockingPage);
};
diff --git a/chrome/browser/ssl/ssl_policy.cc b/chrome/browser/ssl/ssl_policy.cc
index 5f15772..7f3ad87 100644
--- a/chrome/browser/ssl/ssl_policy.cc
+++ b/chrome/browser/ssl/ssl_policy.cc
@@ -60,7 +60,7 @@ void SSLPolicy::OnCertError(SSLCertErrorHandler* handler) {
case net::ERR_CERT_DATE_INVALID:
case net::ERR_CERT_AUTHORITY_INVALID:
case net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM:
- OnOverridableCertError(handler);
+ OnCertErrorInternal(handler, true);
break;
case net::ERR_CERT_NO_REVOCATION_MECHANISM:
// Ignore this error.
@@ -74,7 +74,7 @@ void SSLPolicy::OnCertError(SSLCertErrorHandler* handler) {
case net::ERR_CERT_CONTAINS_ERRORS:
case net::ERR_CERT_REVOKED:
case net::ERR_CERT_INVALID:
- OnFatalCertError(handler);
+ OnCertErrorInternal(handler, false);
break;
default:
NOTREACHED();
@@ -184,7 +184,8 @@ void SSLPolicy::OnAllowCertificate(SSLCertErrorHandler* handler) {
////////////////////////////////////////////////////////////////////////////////
// Certificate Error Routines
-void SSLPolicy::OnOverridableCertError(SSLCertErrorHandler* handler) {
+void SSLPolicy::OnCertErrorInternal(SSLCertErrorHandler* handler,
+ bool overridable) {
if (handler->resource_type() != ResourceType::MAIN_FRAME) {
// A sub-resource has a certificate error. The user doesn't really
// have a context for making the right decision, so block the
@@ -193,64 +194,11 @@ void SSLPolicy::OnOverridableCertError(SSLCertErrorHandler* handler) {
handler->DenyRequest();
return;
}
- // We need to ask the user to approve this certificate.
- SSLBlockingPage* blocking_page = new SSLBlockingPage(handler, this);
+ SSLBlockingPage* blocking_page = new SSLBlockingPage(handler, this,
+ overridable);
blocking_page->Show();
}
-void SSLPolicy::OnFatalCertError(SSLCertErrorHandler* handler) {
- if (handler->resource_type() != ResourceType::MAIN_FRAME) {
- handler->DenyRequest();
- return;
- }
- handler->CancelRequest();
- ShowErrorPage(handler);
- // No need to degrade our security indicators because we didn't continue.
-}
-
-void SSLPolicy::ShowErrorPage(SSLCertErrorHandler* handler) {
- SSLErrorInfo error_info = GetSSLErrorInfo(handler);
-
- // Let's build the html error page.
- DictionaryValue strings;
- strings.SetString(L"title", l10n_util::GetString(IDS_SSL_ERROR_PAGE_TITLE));
- strings.SetString(L"headLine", error_info.title());
- strings.SetString(L"description", error_info.details());
- strings.SetString(L"moreInfoTitle",
- l10n_util::GetString(IDS_CERT_ERROR_EXTRA_INFO_TITLE));
- SSLBlockingPage::SetExtraInfo(&strings, error_info.extra_information());
-
- strings.SetString(L"back", l10n_util::GetString(IDS_SSL_ERROR_PAGE_BACK));
-
- strings.SetString(L"textdirection", base::i18n::IsRTL() ? L"rtl" : L"ltr");
-
- static const base::StringPiece html(
- ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_SSL_ERROR_HTML));
-
- std::string html_text(jstemplate_builder::GetI18nTemplateHtml(html,
- &strings));
-
- TabContents* tab = handler->GetTabContents();
- int cert_id = CertStore::GetSharedInstance()->StoreCert(
- handler->ssl_info().cert,
- tab->render_view_host()->process()->id());
- std::string security_info =
- SSLManager::SerializeSecurityInfo(cert_id,
- handler->ssl_info().cert_status,
- handler->ssl_info().security_bits);
- tab->render_view_host()->LoadAlternateHTMLString(html_text,
- true,
- handler->request_url(),
- security_info);
-
- // TODO(jcampan): we may want to set the navigation entry type to
- // PageType::ERROR_PAGE. The navigation entry is not available at this point,
- // it is created when the renderer receives a DidNavigate (triggered by the
- // LoadAlternateHTMLString above). We'd probably need to pass the page type
- // along with the security_info.
-}
-
void SSLPolicy::InitializeEntryIfNeeded(NavigationEntry* entry) {
if (entry->ssl().security_style() != SECURITY_STYLE_UNKNOWN)
return;
diff --git a/chrome/browser/ssl/ssl_policy.h b/chrome/browser/ssl/ssl_policy.h
index 5a4b822..bd30df5 100644
--- a/chrome/browser/ssl/ssl_policy.h
+++ b/chrome/browser/ssl/ssl_policy.h
@@ -47,18 +47,12 @@ class SSLPolicy : public SSLBlockingPage::Delegate {
virtual void OnAllowCertificate(SSLCertErrorHandler* handler);
private:
- // Helper method for derived classes handling certificate errors that can be
- // overridden by the user.
- // Show a blocking page and let the user continue or cancel the request.
- void OnOverridableCertError(SSLCertErrorHandler* handler);
-
- // Helper method for derived classes handling fatal certificate errors.
- // Cancel the request and show an error page.
- void OnFatalCertError(SSLCertErrorHandler* handler);
-
- // Show an error page for this certificate error. This error page does not
- // give the user the opportunity to ingore the error.
- void ShowErrorPage(SSLCertErrorHandler* handler);
+ // Helper method for derived classes handling certificate errors.
+ // If the error can be overridden by the user, pass overriable=true, which
+ // shows a blocking page and lets the user continue or cancel the request.
+ // For fatal certificate errors, pass overridable=false, which show an error
+ // page.
+ void OnCertErrorInternal(SSLCertErrorHandler* handler, bool overridable);
// If the security style of |entry| has not been initialized, then initialize
// it with the default style for its URL.
diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h
index 75c10e8..9df2289 100644
--- a/chrome/common/render_messages_internal.h
+++ b/chrome/common/render_messages_internal.h
@@ -194,14 +194,6 @@ IPC_BEGIN_MESSAGES(View)
// Tells the renderer to reload the current focused frame
IPC_MESSAGE_ROUTED0(ViewMsg_ReloadFrame)
- // Tells the renderer to load the specified html text and report a navigation
- // to display_url if passing true for new navigation.
- IPC_MESSAGE_ROUTED4(ViewMsg_LoadAlternateHTMLText,
- std::string /* utf8 html text */,
- bool, /* new navigation */
- GURL /* display url */,
- std::string /* security info */)
-
// This message notifies the renderer that the user has closed the FindInPage
// window (and what action to take regarding the selection).
IPC_MESSAGE_ROUTED1(ViewMsg_StopFinding,
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index b610897..530a820 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -554,7 +554,6 @@ void RenderView::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_Navigate, OnNavigate)
IPC_MESSAGE_HANDLER(ViewMsg_Stop, OnStop)
IPC_MESSAGE_HANDLER(ViewMsg_ReloadFrame, OnReloadFrame)
- IPC_MESSAGE_HANDLER(ViewMsg_LoadAlternateHTMLText, OnLoadAlternateHTMLText)
IPC_MESSAGE_HANDLER(ViewMsg_Undo, OnUndo)
IPC_MESSAGE_HANDLER(ViewMsg_Redo, OnRedo)
IPC_MESSAGE_HANDLER(ViewMsg_Cut, OnCut)
@@ -1003,26 +1002,6 @@ void RenderView::OnReloadFrame() {
}
}
-void RenderView::OnLoadAlternateHTMLText(const std::string& html,
- bool new_navigation,
- const GURL& display_url,
- const std::string& security_info) {
- if (!webview())
- return;
-
- pending_navigation_state_.reset(NavigationState::CreateBrowserInitiated(
- new_navigation ? -1 : page_id_,
- history_list_offset_,
- PageTransition::LINK,
- Time::Now()));
- pending_navigation_state_->set_security_info(security_info);
-
- webview()->mainFrame()->loadHTMLString(
- html, GURL(kUnreachableWebDataURL), display_url, !new_navigation);
-
- pending_navigation_state_.reset();
-}
-
void RenderView::OnCopyImageAt(int x, int y) {
webview()->copyImageAt(WebPoint(x, y));
}
@@ -4938,7 +4917,6 @@ bool RenderView::ScheduleFileChooser(
}
WebKit::WebGeolocationService* RenderView::geolocationService() {
-
if (!geolocation_dispatcher_.get())
geolocation_dispatcher_.reset(new GeolocationDispatcher(this));
return geolocation_dispatcher_.get();
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h
index 7277752..bfdf304 100644
--- a/chrome/renderer/render_view.h
+++ b/chrome/renderer/render_view.h
@@ -532,7 +532,6 @@ class RenderView : public RenderWidget,
// For unit tests.
friend class RenderViewTest;
friend class PepperDeviceTest;
- FRIEND_TEST(RenderViewTest, OnLoadAlternateHTMLText);
FRIEND_TEST(RenderViewTest, OnNavStateChanged);
FRIEND_TEST(RenderViewTest, OnImeStateChanged);
FRIEND_TEST(RenderViewTest, ImeComposition);
@@ -627,10 +626,6 @@ class RenderView : public RenderWidget,
void OnNavigate(const ViewMsg_Navigate_Params& params);
void OnStop();
void OnReloadFrame();
- void OnLoadAlternateHTMLText(const std::string& html_contents,
- bool new_navigation,
- const GURL& display_url,
- const std::string& security_info);
void OnUpdateTargetURLAck();
void OnUndo();
void OnRedo();
diff --git a/chrome/renderer/render_view_unittest.cc b/chrome/renderer/render_view_unittest.cc
index d85396b..07dd695 100644
--- a/chrome/renderer/render_view_unittest.cc
+++ b/chrome/renderer/render_view_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -36,25 +36,6 @@ static WebCompositionCommand ToCompositionCommand(int string_type) {
}
}
-TEST_F(RenderViewTest, OnLoadAlternateHTMLText) {
- // Test a new navigation.
- GURL test_url("http://www.google.com/some_test_url");
- view_->OnLoadAlternateHTMLText("<html></html>", true, test_url,
- std::string());
-
- // We should have gotten two different types of start messages in the
- // following order.
- ASSERT_EQ((size_t)2, render_thread_.sink().message_count());
- const IPC::Message* msg = render_thread_.sink().GetMessageAt(0);
- EXPECT_EQ(ViewHostMsg_DidStartLoading::ID, msg->type());
-
- msg = render_thread_.sink().GetMessageAt(1);
- EXPECT_EQ(ViewHostMsg_DidStartProvisionalLoadForFrame::ID, msg->type());
- ViewHostMsg_DidStartProvisionalLoadForFrame::Param start_params;
- ViewHostMsg_DidStartProvisionalLoadForFrame::Read(msg, &start_params);
- EXPECT_EQ(GURL("chrome://chromewebdata/"), start_params.b);
-}
-
// Test that we get form state change notifications when input fields change.
TEST_F(RenderViewTest, OnNavStateChanged) {
// Don't want any delay for form state sync changes. This will still post a