Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: content/test/plugin/plugin_geturl_test.cc

Issue 62203013: Add regression test for 301510 (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/test/plugin/plugin_geturl_test.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/test/plugin/plugin_geturl_test.cc
===================================================================
--- content/test/plugin/plugin_geturl_test.cc (revision 234230)
+++ content/test/plugin/plugin_geturl_test.cc (working copy)
@@ -29,9 +29,12 @@
#define REDIRECT_SRC_URL \
"http://mock.http/npapi/plugin_read_page_redirect_src.html"
-// The notification id for the redirect notification url.
-#define REDIRECT_SRC_URL_NOTIFICATION_ID 4
+// The notification id for the redirect notification url that we will cancel.
+#define REDIRECT_SRC_URL_NOTIFICATION_CANCEL_ID 4
+// The notification id for the redirect notification url that we will accept.
+#define REDIRECT_SRC_URL_NOTIFICATION_ALLOW_ID 5
+
// The identifier for the bogus url stream.
#define BOGUS_URL_STREAM_ID 3
@@ -48,7 +51,8 @@
expect_404_response_(false),
npn_evaluate_context_(false),
handle_url_redirects_(false),
- received_url_redirect_notification_(false),
+ received_url_redirect_cancel_notification_(false),
+ received_url_redirect_allow_notification_(false),
check_cookies_(false) {
}
@@ -114,7 +118,7 @@
} else if (handle_url_redirects_) {
HostFunctions()->geturlnotify(
id(), REDIRECT_SRC_URL, NULL,
- reinterpret_cast<void*>(REDIRECT_SRC_URL_NOTIFICATION_ID));
+ reinterpret_cast<void*>(REDIRECT_SRC_URL_NOTIFICATION_CANCEL_ID));
return NPERR_NO_ERROR;
} else if (check_cookies_) {
HostFunctions()->geturlnotify(
@@ -217,9 +221,11 @@
case BOGUS_URL_STREAM_ID:
SetError("Unexpected NewStream for BOGUS_URL");
break;
- case REDIRECT_SRC_URL_NOTIFICATION_ID:
+ case REDIRECT_SRC_URL_NOTIFICATION_CANCEL_ID:
SetError("Should not redirect to URL when plugin denied it.");
break;
+ case REDIRECT_SRC_URL_NOTIFICATION_ALLOW_ID:
+ break;
default:
SetError("Unexpected NewStream callback");
break;
@@ -294,6 +300,8 @@
case BOGUS_URL_STREAM_ID:
SetError("Unexpected write callback for BOGUS_URL");
break;
+ case REDIRECT_SRC_URL_NOTIFICATION_ALLOW_ID:
+ break;
default:
SetError("Unexpected write callback");
break;
@@ -340,6 +348,8 @@
case SELF_URL_STREAM_ID:
// don't care
break;
+ case REDIRECT_SRC_URL_NOTIFICATION_ALLOW_ID:
+ break;
case FETCHED_URL_STREAM_ID:
{
char read_buffer[STREAM_CHUNK];
@@ -414,10 +424,22 @@
}
tests_in_progress_--;
break;
- case REDIRECT_SRC_URL_NOTIFICATION_ID: {
- if (!received_url_redirect_notification_) {
- SetError("Failed to receive URLRedirect notification");
+ case REDIRECT_SRC_URL_NOTIFICATION_CANCEL_ID: {
+ if (!received_url_redirect_cancel_notification_) {
+ SetError("Failed to receive URLRedirect notification for cancel");
}
+ if (reason != NPRES_NETWORK_ERR) {
+ SetError("Redirected URL didn't get canceled");
+ }
+ break;
+ }
+ case REDIRECT_SRC_URL_NOTIFICATION_ALLOW_ID: {
+ if (!received_url_redirect_allow_notification_) {
+ SetError("Failed to receive URLRedirect notification for allow");
+ }
+ if (reason != NPRES_DONE) {
+ SetError("Redirected URL didn't complete successfully");
+ }
tests_in_progress_--;
break;
}
@@ -433,10 +455,22 @@
void PluginGetURLTest::URLRedirectNotify(const char* url,
int32_t status,
void* notify_data) {
- if (!base::strcasecmp(url, "http://mock.http/npapi/plugin_read_page.html")) {
- received_url_redirect_notification_ = true;
- // Disallow redirect notification.
- HostFunctions()->urlredirectresponse(id(), notify_data, false);
+ unsigned long stream_id = reinterpret_cast<unsigned long>(notify_data);
+ if (stream_id == REDIRECT_SRC_URL_NOTIFICATION_CANCEL_ID) {
+ if (!base::strcasecmp(url,
+ "http://mock.http/npapi/plugin_read_page.html")) {
+ received_url_redirect_cancel_notification_ = true;
+ // Disallow redirect notification.
+ HostFunctions()->urlredirectresponse(id(), notify_data, false);
+
+ // Now start a request that we will allow to redirect.
+ HostFunctions()->geturlnotify(
+ id(), REDIRECT_SRC_URL, NULL,
+ reinterpret_cast<void*>(REDIRECT_SRC_URL_NOTIFICATION_ALLOW_ID));
+ }
+ } else if (stream_id == REDIRECT_SRC_URL_NOTIFICATION_ALLOW_ID) {
+ received_url_redirect_allow_notification_ = true;
+ HostFunctions()->urlredirectresponse(id(), notify_data, true);
}
}
« no previous file with comments | « content/test/plugin/plugin_geturl_test.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698