diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-30 22:36:04 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-30 22:36:04 +0000 |
commit | 8388adaf8d1ae2d3793c18bb878daadd91f408c7 (patch) | |
tree | 710d6d37b0277bb197a030701ab79309b68cd835 /webkit/glue | |
parent | de0c4e4f741ee8076e2081564790dbf778eaa7b5 (diff) | |
download | chromium_src-8388adaf8d1ae2d3793c18bb878daadd91f408c7.zip chromium_src-8388adaf8d1ae2d3793c18bb878daadd91f408c7.tar.gz chromium_src-8388adaf8d1ae2d3793c18bb878daadd91f408c7.tar.bz2 |
Reverting 22041 as it caused plugin crashes in reliability test runs.
Also reverting 22065/22046/22041 which are changes to knowncrashes.txt.
TBR=huanr
Review URL: http://codereview.chromium.org/160418
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22109 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/plugins/plugin_instance.cc | 4 | ||||
-rw-r--r-- | webkit/glue/plugins/plugin_stream_url.cc | 5 | ||||
-rw-r--r-- | webkit/glue/plugins/plugin_stream_url.h | 3 | ||||
-rw-r--r-- | webkit/glue/plugins/test/plugin_get_javascript_url_test.cc | 83 | ||||
-rw-r--r-- | webkit/glue/plugins/test/plugin_get_javascript_url_test.h | 10 | ||||
-rw-r--r-- | webkit/glue/webplugin.h | 3 | ||||
-rw-r--r-- | webkit/glue/webplugin_impl.cc | 8 |
7 files changed, 18 insertions, 98 deletions
diff --git a/webkit/glue/plugins/plugin_instance.cc b/webkit/glue/plugins/plugin_instance.cc index 79b5b4f..d980e10 100644 --- a/webkit/glue/plugins/plugin_instance.cc +++ b/webkit/glue/plugins/plugin_instance.cc @@ -373,10 +373,12 @@ void PluginInstance::DidReceiveManualResponse(const std::string& url, response_url = instance_url_.spec(); } + bool cancel = false; + plugin_data_stream_ = CreateStream(-1, url, mime_type, false, NULL); plugin_data_stream_->DidReceiveResponse(mime_type, headers, expected_length, - last_modified, true); + last_modified, true, &cancel); } void PluginInstance::DidReceiveManualData(const char* buffer, int length) { diff --git a/webkit/glue/plugins/plugin_stream_url.cc b/webkit/glue/plugins/plugin_stream_url.cc index 53d1019..b050411 100644 --- a/webkit/glue/plugins/plugin_stream_url.cc +++ b/webkit/glue/plugins/plugin_stream_url.cc @@ -44,15 +44,16 @@ void PluginStreamUrl::DidReceiveResponse(const std::string& mime_type, const std::string& headers, uint32 expected_length, uint32 last_modified, - bool request_is_seekable) { + bool request_is_seekable, + bool* cancel) { bool opened = Open(mime_type, headers, expected_length, last_modified, request_is_seekable); if (!opened) { - CancelRequest(); instance()->RemoveStream(this); + *cancel = true; } } diff --git a/webkit/glue/plugins/plugin_stream_url.h b/webkit/glue/plugins/plugin_stream_url.h index 1f5fe57..db5d4a5 100644 --- a/webkit/glue/plugins/plugin_stream_url.h +++ b/webkit/glue/plugins/plugin_stream_url.h @@ -48,7 +48,8 @@ class PluginStreamUrl : public PluginStream, const std::string& headers, uint32 expected_length, uint32 last_modified, - bool request_is_seekable); + bool request_is_seekable, + bool* cancel); void DidReceiveData(const char* buffer, int length, int data_offset); void DidFinishLoading(); void DidFail(); diff --git a/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc b/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc index ebdd745..74d01f1 100644 --- a/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc +++ b/webkit/glue/plugins/test/plugin_get_javascript_url_test.cc @@ -17,19 +17,11 @@ // The maximum chunk size of stream data. #define STREAM_CHUNK 197 -const int kNPNEvaluateTimerID = 100; -const int kNPNEvaluateTimerElapse = 50; - - namespace NPAPIClient { ExecuteGetJavascriptUrlTest::ExecuteGetJavascriptUrlTest(NPP id, NPNetscapeFuncs *host_functions) : PluginTest(id, host_functions), - test_started_(false), -#ifdef OS_WIN - window_(NULL), -#endif - npn_evaluate_context_(false) { + test_started_(false) { } NPError ExecuteGetJavascriptUrlTest::SetWindow(NPWindow* pNPWindow) { @@ -38,64 +30,15 @@ NPError ExecuteGetJavascriptUrlTest::SetWindow(NPWindow* pNPWindow) { HostFunctions()->geturlnotify(id(), url.c_str(), "_top", reinterpret_cast<void*>(SELF_URL_STREAM_ID)); test_started_ = true; - -#ifdef OS_WIN - HWND window_handle = reinterpret_cast<HWND>(pNPWindow->window); - if (!::GetProp(window_handle, L"Plugin_Instance")) { - ::SetProp(window_handle, L"Plugin_Instance", this); - // We attempt to retreive the NPObject for the plugin instance identified - // by the NPObjectLifetimeTestInstance2 class as it may not have been - // instantiated yet. - SetTimer(window_handle, kNPNEvaluateTimerID, kNPNEvaluateTimerElapse, - TimerProc); - } - window_ = window_handle; -#endif } - return NPERR_NO_ERROR; } -#ifdef OS_WIN -void CALLBACK ExecuteGetJavascriptUrlTest::TimerProc( - HWND window, UINT message, UINT timer_id, unsigned long elapsed_time) { - ExecuteGetJavascriptUrlTest* this_instance = - reinterpret_cast<ExecuteGetJavascriptUrlTest*> - (::GetProp(window, L"Plugin_Instance")); - - NPObject *window_obj = NULL; - this_instance->HostFunctions()->getvalue(this_instance->id(), - NPNVWindowNPObject, - &window_obj); - if (!window_obj) { - this_instance->SetError("Failed to get NPObject for plugin instance2"); - this_instance->SignalTestCompleted(); - return; - } - - std::string script = "javascript:window.location"; - NPString script_string; - script_string.UTF8Characters = script.c_str(); - script_string.UTF8Length = static_cast<unsigned int>(script.length()); - NPVariant result_var; - - this_instance->npn_evaluate_context_ = true; - NPError result = this_instance->HostFunctions()->evaluate( - this_instance->id(), window_obj, &script_string, &result_var); - this_instance->npn_evaluate_context_ = false; -} -#endif - NPError ExecuteGetJavascriptUrlTest::NewStream(NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype) { if (stream == NULL) SetError("NewStream got null stream"); - if (npn_evaluate_context_) { - SetError("NewStream received in context of NPN_Evaluate"); - return NPERR_NO_ERROR; - } - COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData), cast_validity_check); unsigned long stream_id = reinterpret_cast<unsigned long>(stream->notifyData); @@ -110,10 +53,6 @@ NPError ExecuteGetJavascriptUrlTest::NewStream(NPMIMEType type, NPStream* stream } int32 ExecuteGetJavascriptUrlTest::WriteReady(NPStream *stream) { - if (npn_evaluate_context_) { - SetError("WriteReady received in context of NPN_Evaluate"); - return NPERR_NO_ERROR; - } return STREAM_CHUNK; } @@ -124,11 +63,6 @@ int32 ExecuteGetJavascriptUrlTest::Write(NPStream *stream, int32 offset, int32 l if (len < 0 || len > STREAM_CHUNK) SetError("Write got bogus stream chunk size"); - if (npn_evaluate_context_) { - SetError("Write received in context of NPN_Evaluate"); - return len; - } - COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData), cast_validity_check); unsigned long stream_id = reinterpret_cast<unsigned long>(stream->notifyData); @@ -149,15 +83,6 @@ NPError ExecuteGetJavascriptUrlTest::DestroyStream(NPStream *stream, NPError rea if (stream == NULL) SetError("NewStream got null stream"); -#ifdef OS_WIN - KillTimer(window_, kNPNEvaluateTimerID); -#endif - - if (npn_evaluate_context_) { - SetError("DestroyStream received in context of NPN_Evaluate"); - return NPERR_NO_ERROR; - } - COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(stream->notifyData), cast_validity_check); unsigned long stream_id = reinterpret_cast<unsigned long>(stream->notifyData); @@ -175,12 +100,6 @@ NPError ExecuteGetJavascriptUrlTest::DestroyStream(NPStream *stream, NPError rea void ExecuteGetJavascriptUrlTest::URLNotify(const char* url, NPReason reason, void* data) { COMPILE_ASSERT(sizeof(unsigned long) <= sizeof(data), cast_validity_check); - - if (npn_evaluate_context_) { - SetError("URLNotify received in context of NPN_Evaluate"); - return; - } - unsigned long stream_id = reinterpret_cast<unsigned long>(data); switch (stream_id) { case SELF_URL_STREAM_ID: diff --git a/webkit/glue/plugins/test/plugin_get_javascript_url_test.h b/webkit/glue/plugins/test/plugin_get_javascript_url_test.h index 5c2540d..cff6775 100644 --- a/webkit/glue/plugins/test/plugin_get_javascript_url_test.h +++ b/webkit/glue/plugins/test/plugin_get_javascript_url_test.h @@ -28,18 +28,8 @@ class ExecuteGetJavascriptUrlTest : public PluginTest { virtual void URLNotify(const char* url, NPReason reason, void* data); private: -#if defined(OS_WIN) - static void CALLBACK TimerProc(HWND window, UINT message, UINT timer_id, - unsigned long elapsed_time); -#endif bool test_started_; - // This flag is set to true in the context of the NPN_Evaluate call. - bool npn_evaluate_context_; std::string self_url_; - -#if defined(OS_WIN) - HWND window_; -#endif }; } // namespace NPAPIClient diff --git a/webkit/glue/webplugin.h b/webkit/glue/webplugin.h index 70952d0..07d2470 100644 --- a/webkit/glue/webplugin.h +++ b/webkit/glue/webplugin.h @@ -146,7 +146,8 @@ class WebPluginResourceClient { const std::string& headers, uint32 expected_length, uint32 last_modified, - bool request_is_seekable) = 0; + bool request_is_seekable, + bool* cancel) = 0; virtual void DidReceiveData(const char* buffer, int length, int data_offset) = 0; virtual void DidFinishLoading() = 0; diff --git a/webkit/glue/webplugin_impl.cc b/webkit/glue/webplugin_impl.cc index 1761b23..826bfb9 100644 --- a/webkit/glue/webplugin_impl.cc +++ b/webkit/glue/webplugin_impl.cc @@ -999,7 +999,13 @@ void WebPluginImpl::didReceiveResponse(WebURLLoader* loader, base::SysWideToNativeMB(http_response_info.mime_type), base::SysWideToNativeMB(GetAllHeaders(resource_response)), http_response_info.expected_length, - http_response_info.last_modified, request_is_seekable); + http_response_info.last_modified, request_is_seekable, &cancel); + + if (cancel) { + loader->cancel(); + RemoveClient(loader); + return; + } // Bug http://b/issue?id=925559. The flash plugin would not handle the HTTP // error codes in the stream header and as a result, was unaware of the |