summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/test/plugin_geturl_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/test/plugin_geturl_test.cc')
-rw-r--r--webkit/glue/plugins/test/plugin_geturl_test.cc39
1 files changed, 33 insertions, 6 deletions
diff --git a/webkit/glue/plugins/test/plugin_geturl_test.cc b/webkit/glue/plugins/test/plugin_geturl_test.cc
index cdce37d..df4bcc5 100644
--- a/webkit/glue/plugins/test/plugin_geturl_test.cc
+++ b/webkit/glue/plugins/test/plugin_geturl_test.cc
@@ -46,12 +46,18 @@ NPError PluginGetURLTest::New(uint16 mode, int16 argc, const char* argn[],
if (page_not_found_url) {
page_not_found_url_ = page_not_found_url;
expect_404_response_ = true;
- } else {
- const char* fail_write_url = GetArgValue("fail_write_url", argc,
- argn, argv);
- if (fail_write_url) {
- fail_write_url_ = fail_write_url;
- }
+ }
+
+ const char* fail_write_url = GetArgValue("fail_write_url", argc,
+ argn, argv);
+ if (fail_write_url) {
+ fail_write_url_ = fail_write_url;
+ }
+
+ const char* referrer_target_url = GetArgValue("ref_target", argc,
+ argn, argv);
+ if (referrer_target_url) {
+ referrer_target_url_ = referrer_target_url;
}
return PluginTest::New(mode, argc, argn, argv, saved);
@@ -69,6 +75,11 @@ NPError PluginGetURLTest::SetWindow(NPWindow* pNPWindow) {
} else if (!fail_write_url_.empty()) {
HostFunctions()->geturl(id(), fail_write_url_.c_str(), NULL);
return NPERR_NO_ERROR;
+ } else if (!referrer_target_url_.empty()) {
+ HostFunctions()->pushpopupsenabledstate(id(), true);
+ HostFunctions()->geturl(id(), referrer_target_url_.c_str(), "_blank");
+ HostFunctions()->poppopupsenabledstate(id());
+ return NPERR_NO_ERROR;
}
std::string url = SELF_URL;
@@ -94,6 +105,10 @@ NPError PluginGetURLTest::NewStream(NPMIMEType type, NPStream* stream,
return PluginTest::NewStream(type, stream, seekable, stype);
}
+ if (!referrer_target_url_.empty()) {
+ return NPERR_NO_ERROR;
+ }
+
COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData),
cast_validity_check);
@@ -160,6 +175,10 @@ int32 PluginGetURLTest::WriteReady(NPStream *stream) {
return PluginTest::WriteReady(stream);
}
+ if (!referrer_target_url_.empty()) {
+ return STREAM_CHUNK;
+ }
+
COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData),
cast_validity_check);
unsigned long stream_id = reinterpret_cast<unsigned long>(
@@ -181,6 +200,10 @@ int32 PluginGetURLTest::Write(NPStream *stream, int32 offset, int32 len,
return -1;
}
+ if (!referrer_target_url_.empty()) {
+ return len;
+ }
+
if (stream == NULL) {
SetError("Write got null stream");
return -1;
@@ -244,6 +267,10 @@ NPError PluginGetURLTest::DestroyStream(NPStream *stream, NPError reason) {
return NPERR_NO_ERROR;
}
+ if (!referrer_target_url_.empty()) {
+ return NPERR_NO_ERROR;
+ }
+
unsigned long stream_id =
reinterpret_cast<unsigned long>(stream->notifyData);
switch (stream_id) {