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

Side by Side Diff: webkit/glue/plugins/webplugin_impl.cc

Issue 2262002: Add ppapi plugins to about:plugins (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "gfx/rect.h" 9 #include "gfx/rect.h"
10 #include "net/base/escape.h" 10 #include "net/base/escape.h"
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 } 201 }
202 202
203 } // namespace 203 } // namespace
204 204
205 // WebKit::WebPlugin ---------------------------------------------------------- 205 // WebKit::WebPlugin ----------------------------------------------------------
206 206
207 bool WebPluginImpl::initialize(WebPluginContainer* container) { 207 bool WebPluginImpl::initialize(WebPluginContainer* container) {
208 if (!page_delegate_) 208 if (!page_delegate_)
209 return false; 209 return false;
210 210
211 std::string actual_mime_type;
212 WebPluginDelegate* plugin_delegate = page_delegate_->CreatePluginDelegate( 211 WebPluginDelegate* plugin_delegate = page_delegate_->CreatePluginDelegate(
213 plugin_url_, mime_type_, &actual_mime_type); 212 file_path_, mime_type_);
214 if (!plugin_delegate) 213 if (!plugin_delegate)
215 return NULL; 214 return false;
216 215
217 // Set the container before Initialize because the plugin may 216 // Set the container before Initialize because the plugin may
218 // synchronously call NPN_GetValue to get its container during its 217 // synchronously call NPN_GetValue to get its container during its
219 // initialization. 218 // initialization.
220 SetContainer(container); 219 SetContainer(container);
221 bool ok = plugin_delegate->Initialize( 220 bool ok = plugin_delegate->Initialize(
222 plugin_url_, arg_names_, arg_values_, this, load_manually_); 221 plugin_url_, arg_names_, arg_values_, this, load_manually_);
223 if (!ok) { 222 if (!ok) {
224 plugin_delegate->PluginDestroyed(); 223 plugin_delegate->PluginDestroyed();
225 return false; 224 return false;
226 } 225 }
227 226
228 if (!actual_mime_type.empty())
229 mime_type_ = actual_mime_type;
230 delegate_ = plugin_delegate; 227 delegate_ = plugin_delegate;
231 228
232 return true; 229 return true;
233 } 230 }
234 231
235 void WebPluginImpl::destroy() { 232 void WebPluginImpl::destroy() {
236 SetContainer(NULL); 233 SetContainer(NULL);
237 MessageLoop::current()->DeleteSoon(FROM_HERE, this); 234 MessageLoop::current()->DeleteSoon(FROM_HERE, this);
238 } 235 }
239 236
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 399
403 void WebPluginImpl::printEnd() { 400 void WebPluginImpl::printEnd() {
404 if (delegate_) 401 if (delegate_)
405 delegate_->PrintEnd(); 402 delegate_->PrintEnd();
406 } 403 }
407 404
408 405
409 // ----------------------------------------------------------------------------- 406 // -----------------------------------------------------------------------------
410 407
411 WebPluginImpl::WebPluginImpl( 408 WebPluginImpl::WebPluginImpl(
412 WebFrame* webframe, const WebPluginParams& params, 409 WebFrame* webframe,
410 const WebPluginParams& params,
411 const FilePath& file_path,
412 const std::string& mime_type,
413 const base::WeakPtr<WebPluginPageDelegate>& page_delegate) 413 const base::WeakPtr<WebPluginPageDelegate>& page_delegate)
414 : windowless_(false), 414 : windowless_(false),
415 window_(gfx::kNullPluginWindow), 415 window_(gfx::kNullPluginWindow),
416 accepts_input_events_(false), 416 accepts_input_events_(false),
417 page_delegate_(page_delegate), 417 page_delegate_(page_delegate),
418 webframe_(webframe), 418 webframe_(webframe),
419 delegate_(NULL), 419 delegate_(NULL),
420 container_(NULL), 420 container_(NULL),
421 plugin_url_(params.url), 421 plugin_url_(params.url),
422 load_manually_(params.loadManually), 422 load_manually_(params.loadManually),
423 first_geometry_update_(true), 423 first_geometry_update_(true),
424 ignore_response_error_(false), 424 ignore_response_error_(false),
425 mime_type_(params.mimeType.utf8()), 425 file_path_(file_path),
426 mime_type_(mime_type),
426 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { 427 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {
427 DCHECK_EQ(params.attributeNames.size(), params.attributeValues.size()); 428 DCHECK_EQ(params.attributeNames.size(), params.attributeValues.size());
428 StringToLowerASCII(&mime_type_); 429 StringToLowerASCII(&mime_type_);
429 430
430 for (size_t i = 0; i < params.attributeNames.size(); ++i) { 431 for (size_t i = 0; i < params.attributeNames.size(); ++i) {
431 arg_names_.push_back(params.attributeNames[i].utf8()); 432 arg_names_.push_back(params.attributeNames[i].utf8());
432 arg_values_.push_back(params.attributeValues[i].utf8()); 433 arg_values_.push_back(params.attributeValues[i].utf8());
433 } 434 }
434 } 435 }
435 436
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 return false; 1142 return false;
1142 1143
1143 WebPluginContainer* container_widget = container_; 1144 WebPluginContainer* container_widget = container_;
1144 1145
1145 // Destroy the current plugin instance. 1146 // Destroy the current plugin instance.
1146 TearDownPluginInstance(loader); 1147 TearDownPluginInstance(loader);
1147 1148
1148 container_ = container_widget; 1149 container_ = container_widget;
1149 webframe_ = webframe; 1150 webframe_ = webframe;
1150 1151
1151 std::string actual_mime_type;
1152 WebPluginDelegate* plugin_delegate = page_delegate_->CreatePluginDelegate( 1152 WebPluginDelegate* plugin_delegate = page_delegate_->CreatePluginDelegate(
1153 plugin_url_, mime_type_, &actual_mime_type); 1153 file_path_, mime_type_);
1154 1154
1155 bool ok = plugin_delegate->Initialize( 1155 bool ok = plugin_delegate && plugin_delegate->Initialize(
1156 plugin_url_, arg_names_, arg_values_, this, load_manually_); 1156 plugin_url_, arg_names_, arg_values_, this, load_manually_);
1157 1157
1158 if (!ok) { 1158 if (!ok) {
1159 container_ = NULL; 1159 container_ = NULL;
1160 // TODO(iyengar) Should we delete the current plugin instance here? 1160 // TODO(iyengar) Should we delete the current plugin instance here?
1161 return false; 1161 return false;
1162 } 1162 }
1163 1163
1164 mime_type_ = actual_mime_type;
1165 delegate_ = plugin_delegate; 1164 delegate_ = plugin_delegate;
1166 1165
1167 // Force a geometry update to occur to ensure that the plugin becomes 1166 // Force a geometry update to occur to ensure that the plugin becomes
1168 // visible. 1167 // visible.
1169 container_->reportGeometry(); 1168 container_->reportGeometry();
1170 1169
1171 // The plugin move sequences accumulated via DidMove are sent to the browser 1170 // The plugin move sequences accumulated via DidMove are sent to the browser
1172 // whenever the renderer paints. Force a paint here to ensure that changes 1171 // whenever the renderer paints. Force a paint here to ensure that changes
1173 // to the plugin window are propagated to the browser. 1172 // to the plugin window are propagated to the browser.
1174 container_->invalidate(); 1173 container_->invalidate();
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1232 WebDevToolsAgent* WebPluginImpl::GetDevToolsAgent() { 1231 WebDevToolsAgent* WebPluginImpl::GetDevToolsAgent() {
1233 if (!webframe_) 1232 if (!webframe_)
1234 return NULL; 1233 return NULL;
1235 WebView* view = webframe_->view(); 1234 WebView* view = webframe_->view();
1236 if (!view) 1235 if (!view)
1237 return NULL; 1236 return NULL;
1238 return view->devToolsAgent(); 1237 return view->devToolsAgent();
1239 } 1238 }
1240 1239
1241 } // namespace webkit_glue 1240 } // namespace webkit_glue
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698