| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/plugins/npapi/test/plugin_npobject_lifetime_test.h" | 5 #include "webkit/plugins/npapi/test/plugin_npobject_lifetime_test.h" |
| 6 | 6 |
| 7 namespace NPAPIClient { | 7 namespace NPAPIClient { |
| 8 | 8 |
| 9 const int kNPObjectLifetimeTimer = 100; | 9 const int kNPObjectLifetimeTimer = 100; |
| 10 const int kNPObjectLifetimeTimerElapse = 2000; | 10 const int kNPObjectLifetimeTimerElapse = 2000; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 // We attempt to retreive the NPObject for the plugin instance identified | 32 // We attempt to retreive the NPObject for the plugin instance identified |
| 33 // by the NPObjectLifetimeTestInstance2 class as it may not have been | 33 // by the NPObjectLifetimeTestInstance2 class as it may not have been |
| 34 // instantiated yet. | 34 // instantiated yet. |
| 35 timer_id_ = SetTimer(window_handle, kNPObjectLifetimeTimer, | 35 timer_id_ = SetTimer(window_handle, kNPObjectLifetimeTimer, |
| 36 kNPObjectLifetimeTimerElapse, TimerProc); | 36 kNPObjectLifetimeTimerElapse, TimerProc); |
| 37 } | 37 } |
| 38 return NPERR_NO_ERROR; | 38 return NPERR_NO_ERROR; |
| 39 } | 39 } |
| 40 | 40 |
| 41 void CALLBACK NPObjectLifetimeTest::TimerProc( | 41 void CALLBACK NPObjectLifetimeTest::TimerProc( |
| 42 HWND window, UINT message, UINT timer_id, | 42 HWND window, UINT message, UINT_PTR timer_id, |
| 43 unsigned long elapsed_milli_seconds) { | 43 DWORD elapsed_milli_seconds) { |
| 44 | 44 |
| 45 NPObjectLifetimeTest* this_instance = | 45 NPObjectLifetimeTest* this_instance = |
| 46 reinterpret_cast<NPObjectLifetimeTest*> | 46 reinterpret_cast<NPObjectLifetimeTest*> |
| 47 (::GetProp(window, L"Plugin_Instance")); | 47 (::GetProp(window, L"Plugin_Instance")); |
| 48 KillTimer(window, this_instance->timer_id_); | 48 KillTimer(window, this_instance->timer_id_); |
| 49 ::RemoveProp(window, L"Plugin_Instance"); | 49 ::RemoveProp(window, L"Plugin_Instance"); |
| 50 | 50 |
| 51 this_instance->timer_id_ = 0; | 51 this_instance->timer_id_ = 0; |
| 52 | 52 |
| 53 this_instance->other_plugin_instance_object_ = | 53 this_instance->other_plugin_instance_object_ = |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 return NPERR_NO_ERROR; | 128 return NPERR_NO_ERROR; |
| 129 | 129 |
| 130 HWND window_handle = reinterpret_cast<HWND>(np_window->window); | 130 HWND window_handle = reinterpret_cast<HWND>(np_window->window); |
| 131 // We setup a timerproc to invoke NPN_Evaluate to destroy this plugin | 131 // We setup a timerproc to invoke NPN_Evaluate to destroy this plugin |
| 132 // instance. This is to ensure that we don't destroy the plugin instance | 132 // instance. This is to ensure that we don't destroy the plugin instance |
| 133 // while it is being used in webkit as this leads to crashes and is a | 133 // while it is being used in webkit as this leads to crashes and is a |
| 134 // more accurate representation of the renderer crash as described in | 134 // more accurate representation of the renderer crash as described in |
| 135 // http://b/issue?id=1134683. | 135 // http://b/issue?id=1134683. |
| 136 if (!timer_id_) { | 136 if (!timer_id_) { |
| 137 timer_id_ = SetTimer(window_handle, kNPObjectLifetimeTimer, | 137 timer_id_ = SetTimer(window_handle, kNPObjectLifetimeTimer, |
| 138 kNPObjectLifetimeTimerElapse, TimerProc); | 138 kNPObjectLifetimeTimerElapse, TimerProc); |
| 139 } | 139 } |
| 140 return NPERR_NO_ERROR; | 140 return NPERR_NO_ERROR; |
| 141 } | 141 } |
| 142 | 142 |
| 143 void CALLBACK NPObjectDeletePluginInNPN_Evaluate::TimerProc( | 143 void CALLBACK NPObjectDeletePluginInNPN_Evaluate::TimerProc( |
| 144 HWND window, UINT message, UINT timer_id, | 144 HWND window, UINT message, UINT_PTR timer_id, |
| 145 unsigned long elapsed_milli_seconds) { | 145 DWORD elapsed_milli_seconds) { |
| 146 | 146 |
| 147 KillTimer(window, g_npn_evaluate_test_instance_->timer_id_); | 147 KillTimer(window, g_npn_evaluate_test_instance_->timer_id_); |
| 148 g_npn_evaluate_test_instance_->timer_id_ = 0; | 148 g_npn_evaluate_test_instance_->timer_id_ = 0; |
| 149 NPObject *window_obj = NULL; | 149 NPObject *window_obj = NULL; |
| 150 g_npn_evaluate_test_instance_->HostFunctions()->getvalue( | 150 g_npn_evaluate_test_instance_->HostFunctions()->getvalue( |
| 151 g_npn_evaluate_test_instance_->id(), NPNVWindowNPObject, | 151 g_npn_evaluate_test_instance_->id(), NPNVWindowNPObject, |
| 152 &window_obj); | 152 &window_obj); |
| 153 | 153 |
| 154 if (!window_obj) { | 154 if (!window_obj) { |
| 155 g_npn_evaluate_test_instance_->SetError( | 155 g_npn_evaluate_test_instance_->SetError( |
| 156 "Failed to get NPObject for plugin instance2"); | 156 "Failed to get NPObject for plugin instance2"); |
| 157 g_npn_evaluate_test_instance_->SignalTestCompleted(); | 157 g_npn_evaluate_test_instance_->SignalTestCompleted(); |
| 158 return; | 158 return; |
| 159 } | 159 } |
| 160 | 160 |
| 161 std::string script = "javascript:DeletePluginWithinScript()"; | 161 std::string script = "javascript:DeletePluginWithinScript()"; |
| 162 NPString script_string; | 162 NPString script_string; |
| 163 script_string.UTF8Characters = script.c_str(); | 163 script_string.UTF8Characters = script.c_str(); |
| 164 script_string.UTF8Length = | 164 script_string.UTF8Length = |
| 165 static_cast<unsigned int>(script.length()); | 165 static_cast<unsigned int>(script.length()); |
| 166 | 166 |
| 167 NPVariant result_var; | 167 NPVariant result_var; |
| 168 bool result = g_npn_evaluate_test_instance_->HostFunctions()->evaluate( | 168 bool result = g_npn_evaluate_test_instance_->HostFunctions()->evaluate( |
| 169 g_npn_evaluate_test_instance_->id(), window_obj, | 169 g_npn_evaluate_test_instance_->id(), window_obj, |
| 170 &script_string, &result_var); | 170 &script_string, &result_var); |
| 171 // If this test failed we would have crashed by now. | 171 // If this test failed we would have crashed by now. |
| 172 } | 172 } |
| 173 | 173 |
| 174 } // namespace NPAPIClient | 174 } // namespace NPAPIClient |
| OLD | NEW |