| 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 <map> | 5 #include <map> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| 11 #include "chrome/common/render_messages.h" | 11 #include "chrome/common/render_messages.h" |
| 12 #include "chrome/renderer/pepper_devices.h" | 12 #include "chrome/renderer/pepper_devices.h" |
| 13 #include "chrome/renderer/webplugin_delegate_pepper.h" | 13 #include "chrome/renderer/webplugin_delegate_pepper.h" |
| 14 #include "chrome/test/render_view_test.h" | 14 #include "chrome/test/render_view_test.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 16 #include "third_party/npapi/bindings/npapi.h" | 16 #include "third_party/npapi/bindings/npapi.h" |
| 17 #include "third_party/npapi/bindings/npruntime.h" | 17 #include "third_party/npapi/bindings/npruntime.h" |
| 18 #include "third_party/WebKit/WebKit/chromium/public/WebPlugin.h" | 18 #include "third_party/WebKit/WebKit/chromium/public/WebPlugin.h" |
| 19 #include "third_party/WebKit/WebKit/chromium/public/WebPluginParams.h" | 19 #include "third_party/WebKit/WebKit/chromium/public/WebPluginParams.h" |
| 20 #include "third_party/WebKit/WebKit/chromium/public/WebRect.h" | 20 #include "third_party/WebKit/WebKit/chromium/public/WebRect.h" |
| 21 #include "webkit/glue/plugins/plugin_instance.h" | 21 #include "webkit/plugins/npapi/plugin_instance.h" |
| 22 #include "webkit/glue/plugins/plugin_list.h" | 22 #include "webkit/plugins/npapi/plugin_list.h" |
| 23 #include "webkit/glue/plugins/webplugin_impl.h" | 23 #include "webkit/plugins/npapi/webplugin_impl.h" |
| 24 | 24 |
| 25 class PepperDeviceTest; | 25 class PepperDeviceTest; |
| 26 | 26 |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 const char kTestPluginMimeType[] = "chrome-test/pepper-device-test"; | 29 const char kTestPluginMimeType[] = "chrome-test/pepper-device-test"; |
| 30 | 30 |
| 31 // This maps the NPP instances to the test object so our C callbacks can easily | 31 // This maps the NPP instances to the test object so our C callbacks can easily |
| 32 // get back to the object. There will normally be only one item in this map. | 32 // get back to the object. There will normally be only one item in this map. |
| 33 static std::map<NPP, PepperDeviceTest*> active_tests; | 33 static std::map<NPP, PepperDeviceTest*> active_tests; |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 NPError err; | 128 NPError err; |
| 129 NPUserData* user_data; | 129 NPUserData* user_data; |
| 130 }; | 130 }; |
| 131 std::vector<FlushData> flush_calls_; | 131 std::vector<FlushData> flush_calls_; |
| 132 | 132 |
| 133 private: | 133 private: |
| 134 // testing::Test implementation. | 134 // testing::Test implementation. |
| 135 virtual void SetUp(); | 135 virtual void SetUp(); |
| 136 virtual void TearDown(); | 136 virtual void TearDown(); |
| 137 | 137 |
| 138 NPAPI::PluginVersionInfo version_info_; | 138 webkit::npapi::PluginVersionInfo version_info_; |
| 139 | 139 |
| 140 scoped_ptr<webkit_glue::WebPluginImpl> plugin_; | 140 scoped_ptr<webkit::npapi::WebPluginImpl> plugin_; |
| 141 WebPluginDelegatePepper* pepper_plugin_; // FIXME(brettw): check lifetime. | 141 WebPluginDelegatePepper* pepper_plugin_; // FIXME(brettw): check lifetime. |
| 142 }; | 142 }; |
| 143 | 143 |
| 144 PepperDeviceTest::PepperDeviceTest() { | 144 PepperDeviceTest::PepperDeviceTest() { |
| 145 version_info_.path = FilePath(FILE_PATH_LITERAL("pepper-device-tester")); | 145 version_info_.path = FilePath(FILE_PATH_LITERAL("pepper-device-tester")); |
| 146 version_info_.product_name = ASCIIToWide("Pepper device test plugin"); | 146 version_info_.product_name = ASCIIToWide("Pepper device test plugin"); |
| 147 version_info_.file_description = ASCIIToWide("Pepper device test plugin"); | 147 version_info_.file_description = ASCIIToWide("Pepper device test plugin"); |
| 148 version_info_.file_version = ASCIIToWide("1"); | 148 version_info_.file_version = ASCIIToWide("1"); |
| 149 version_info_.mime_types = ASCIIToWide(kTestPluginMimeType); | 149 version_info_.mime_types = ASCIIToWide(kTestPluginMimeType); |
| 150 NPAPI::PluginEntryPoints entry_points = { | 150 webkit::npapi::PluginEntryPoints entry_points = { |
| 151 #if !defined(OS_POSIX) || defined(OS_MACOSX) | 151 #if !defined(OS_POSIX) || defined(OS_MACOSX) |
| 152 NP_GetEntryPoints, | 152 NP_GetEntryPoints, |
| 153 #endif | 153 #endif |
| 154 NP_Initialize, | 154 NP_Initialize, |
| 155 NP_Shutdown | 155 NP_Shutdown |
| 156 }; | 156 }; |
| 157 version_info_.entry_points = entry_points; | 157 version_info_.entry_points = entry_points; |
| 158 } | 158 } |
| 159 | 159 |
| 160 PepperDeviceTest::~PepperDeviceTest() { | 160 PepperDeviceTest::~PepperDeviceTest() { |
| 161 } | 161 } |
| 162 | 162 |
| 163 void PepperDeviceTest::SetUp() { | 163 void PepperDeviceTest::SetUp() { |
| 164 RenderViewTest::SetUp(); | 164 RenderViewTest::SetUp(); |
| 165 | 165 |
| 166 NPAPI::PluginList::Singleton()->RegisterInternalPlugin(version_info_); | 166 webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin(version_info_); |
| 167 | 167 |
| 168 // Create the WebKit plugin with no delegates (this seems to work | 168 // Create the WebKit plugin with no delegates (this seems to work |
| 169 // sufficiently for the test). | 169 // sufficiently for the test). |
| 170 WebKit::WebPluginParams params; | 170 WebKit::WebPluginParams params; |
| 171 plugin_.reset(new webkit_glue::WebPluginImpl( | 171 plugin_.reset(new webkit::npapi::WebPluginImpl( |
| 172 NULL, params, FilePath(), std::string(), | 172 NULL, params, FilePath(), std::string(), |
| 173 base::WeakPtr<webkit_glue::WebPluginPageDelegate>())); | 173 base::WeakPtr<webkit::npapi::WebPluginPageDelegate>())); |
| 174 | 174 |
| 175 // Create a pepper plugin for the RenderView. | 175 // Create a pepper plugin for the RenderView. |
| 176 pepper_plugin_ = WebPluginDelegatePepper::Create( | 176 pepper_plugin_ = WebPluginDelegatePepper::Create( |
| 177 plugin_path(), kTestPluginMimeType, view_->AsWeakPtr()); | 177 plugin_path(), kTestPluginMimeType, view_->AsWeakPtr()); |
| 178 ASSERT_TRUE(pepper_plugin_); | 178 ASSERT_TRUE(pepper_plugin_); |
| 179 ASSERT_TRUE(pepper_plugin_->Initialize(GURL(), std::vector<std::string>(), | 179 ASSERT_TRUE(pepper_plugin_->Initialize(GURL(), std::vector<std::string>(), |
| 180 std::vector<std::string>(), | 180 std::vector<std::string>(), |
| 181 plugin_.get(), false)); | 181 plugin_.get(), false)); |
| 182 | 182 |
| 183 // Normally the RenderView creates the pepper plugin and registers it with | 183 // Normally the RenderView creates the pepper plugin and registers it with |
| (...skipping 10 matching lines...) Expand all Loading... |
| 194 pepper_plugin_->UpdateGeometry(rect, rect); | 194 pepper_plugin_->UpdateGeometry(rect, rect); |
| 195 } | 195 } |
| 196 | 196 |
| 197 void PepperDeviceTest::TearDown() { | 197 void PepperDeviceTest::TearDown() { |
| 198 active_tests.erase(active_tests.find(npp())); | 198 active_tests.erase(active_tests.find(npp())); |
| 199 | 199 |
| 200 plugin_.reset(); | 200 plugin_.reset(); |
| 201 if (pepper_plugin_) | 201 if (pepper_plugin_) |
| 202 pepper_plugin_->PluginDestroyed(); | 202 pepper_plugin_->PluginDestroyed(); |
| 203 | 203 |
| 204 NPAPI::PluginList::Singleton()->UnregisterInternalPlugin(version_info_.path); | 204 webkit::npapi::PluginList::Singleton()->UnregisterInternalPlugin( |
| 205 version_info_.path); |
| 205 | 206 |
| 206 RenderViewTest::TearDown(); | 207 RenderViewTest::TearDown(); |
| 207 } | 208 } |
| 208 | 209 |
| 209 // static | 210 // static |
| 210 void PepperDeviceTest::FlushCalled(NPP instance, | 211 void PepperDeviceTest::FlushCalled(NPP instance, |
| 211 NPDeviceContext* context, | 212 NPDeviceContext* context, |
| 212 NPError err, | 213 NPError err, |
| 213 NPUserData* user_data) { | 214 NPUserData* user_data) { |
| 214 if (active_tests.find(instance) == active_tests.end()) | 215 if (active_tests.find(instance) == active_tests.end()) |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 EXPECT_EQ(NPERR_NO_ERROR, | 272 EXPECT_EQ(NPERR_NO_ERROR, |
| 272 pepper_plugin()->DeviceAudioInitializeContext(&config, &context)); | 273 pepper_plugin()->DeviceAudioInitializeContext(&config, &context)); |
| 273 EXPECT_TRUE(render_thread_.sink().GetFirstMessageMatching( | 274 EXPECT_TRUE(render_thread_.sink().GetFirstMessageMatching( |
| 274 ViewHostMsg_CreateAudioStream::ID)); | 275 ViewHostMsg_CreateAudioStream::ID)); |
| 275 EXPECT_EQ(NPERR_NO_ERROR, | 276 EXPECT_EQ(NPERR_NO_ERROR, |
| 276 pepper_plugin()->DeviceAudioDestroyContext(&context)); | 277 pepper_plugin()->DeviceAudioDestroyContext(&context)); |
| 277 EXPECT_TRUE(render_thread_.sink().GetFirstMessageMatching( | 278 EXPECT_TRUE(render_thread_.sink().GetFirstMessageMatching( |
| 278 ViewHostMsg_CloseAudioStream::ID)); | 279 ViewHostMsg_CloseAudioStream::ID)); |
| 279 } | 280 } |
| 280 | 281 |
| OLD | NEW |