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

Side by Side Diff: third_party/WebKit/Source/web/WebPluginContainerImpl.cpp

Issue 1865813002: Remove RawPtr from Source/web/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2014 Opera Software ASA. All rights reserved. 3 * Copyright (C) 2014 Opera Software ASA. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 void WebPluginContainerImpl::hide() 192 void WebPluginContainerImpl::hide()
193 { 193 {
194 setSelfVisible(false); 194 setSelfVisible(false);
195 m_webPlugin->updateVisibility(false); 195 m_webPlugin->updateVisibility(false);
196 196
197 Widget::hide(); 197 Widget::hide();
198 } 198 }
199 199
200 void WebPluginContainerImpl::handleEvent(Event* event) 200 void WebPluginContainerImpl::handleEvent(Event* event)
201 { 201 {
202 RawPtr<WebPluginContainerImpl> protector(this);
203 // The events we pass are defined at: 202 // The events we pass are defined at:
204 // http://devedge-temp.mozilla.org/library/manuals/2002/plugin/1.0/struct ures5.html#1000000 203 // http://devedge-temp.mozilla.org/library/manuals/2002/plugin/1.0/struct ures5.html#1000000
205 // Don't take the documentation as truth, however. There are many cases 204 // Don't take the documentation as truth, however. There are many cases
206 // where mozilla behaves differently than the spec. 205 // where mozilla behaves differently than the spec.
207 if (event->isMouseEvent()) 206 if (event->isMouseEvent())
208 handleMouseEvent(toMouseEvent(event)); 207 handleMouseEvent(toMouseEvent(event));
209 else if (event->isWheelEvent()) 208 else if (event->isWheelEvent())
210 handleWheelEvent(toWheelEvent(event)); 209 handleWheelEvent(toWheelEvent(event));
211 else if (event->isKeyboardEvent()) 210 else if (event->isKeyboardEvent())
212 handleKeyboardEvent(toKeyboardEvent(event)); 211 handleKeyboardEvent(toKeyboardEvent(event));
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 return m_webPlugin->executeEditCommand(name, value); 390 return m_webPlugin->executeEditCommand(name, value);
392 } 391 }
393 392
394 WebElement WebPluginContainerImpl::element() 393 WebElement WebPluginContainerImpl::element()
395 { 394 {
396 return WebElement(m_element); 395 return WebElement(m_element);
397 } 396 }
398 397
399 void WebPluginContainerImpl::dispatchProgressEvent(const WebString& type, bool l engthComputable, unsigned long long loaded, unsigned long long total, const WebS tring& url) 398 void WebPluginContainerImpl::dispatchProgressEvent(const WebString& type, bool l engthComputable, unsigned long long loaded, unsigned long long total, const WebS tring& url)
400 { 399 {
401 RawPtr<ProgressEvent> event; 400 ProgressEvent* event;
402 if (url.isEmpty()) { 401 if (url.isEmpty()) {
403 event = ProgressEvent::create(type, lengthComputable, loaded, total); 402 event = ProgressEvent::create(type, lengthComputable, loaded, total);
404 } else { 403 } else {
405 event = ResourceProgressEvent::create(type, lengthComputable, loaded, to tal, url); 404 event = ResourceProgressEvent::create(type, lengthComputable, loaded, to tal, url);
406 } 405 }
407 m_element->dispatchEvent(event.release()); 406 m_element->dispatchEvent(event);
408 } 407 }
409 408
410 void WebPluginContainerImpl::invalidate() 409 void WebPluginContainerImpl::invalidate()
411 { 410 {
412 Widget::invalidate(); 411 Widget::invalidate();
413 } 412 }
414 413
415 void WebPluginContainerImpl::invalidateRect(const WebRect& rect) 414 void WebPluginContainerImpl::invalidateRect(const WebRect& rect)
416 { 415 {
417 invalidateRect(static_cast<IntRect>(rect)); 416 invalidateRect(static_cast<IntRect>(rect));
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 { 609 {
611 #if ENABLE(OILPAN) 610 #if ENABLE(OILPAN)
612 // With Oilpan, on plugin element detach dispose() will be called to safely 611 // With Oilpan, on plugin element detach dispose() will be called to safely
613 // clear out references, including the pre-emptive destruction of the plugin . 612 // clear out references, including the pre-emptive destruction of the plugin .
614 // 613 //
615 // It clearly has no scriptable object if in such a disposed state. 614 // It clearly has no scriptable object if in such a disposed state.
616 if (!m_webPlugin) 615 if (!m_webPlugin)
617 return v8::Local<v8::Object>(); 616 return v8::Local<v8::Object>();
618 #endif 617 #endif
619 618
620 // The plugin may be destroyed due to re-entrancy when calling
621 // v8ScriptableObject below. crbug.com/458776. Hold a reference to the
622 // plugin container to prevent this from happening. For Oilpan, 'this'
623 // is already stack reachable, so redundant.
624 RawPtr<WebPluginContainerImpl> protector(this);
625
626 v8::Local<v8::Object> object = m_webPlugin->v8ScriptableObject(isolate); 619 v8::Local<v8::Object> object = m_webPlugin->v8ScriptableObject(isolate);
627 620
628 // If the plugin has been destroyed and the reference on the stack is the 621 // If the plugin has been destroyed and the reference on the stack is the
629 // only one left, then don't return the scriptable object. 622 // only one left, then don't return the scriptable object.
630 #if ENABLE(OILPAN) 623 #if ENABLE(OILPAN)
631 if (!m_webPlugin) 624 if (!m_webPlugin)
632 #else 625 #else
633 if (hasOneRef()) 626 if (hasOneRef())
634 #endif 627 #endif
635 return v8::Local<v8::Object>(); 628 return v8::Local<v8::Object>();
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 // frame view. 939 // frame view.
947 computeClipRectsForPlugin(m_element, windowRect, clipRect, unobscuredRec t); 940 computeClipRectsForPlugin(m_element, windowRect, clipRect, unobscuredRec t);
948 } 941 }
949 getPluginOcclusions(m_element, this->parent(), frameRect(), cutOutRects); 942 getPluginOcclusions(m_element, this->parent(), frameRect(), cutOutRects);
950 // Convert to the plugin position. 943 // Convert to the plugin position.
951 for (size_t i = 0; i < cutOutRects.size(); i++) 944 for (size_t i = 0; i < cutOutRects.size(); i++)
952 cutOutRects[i].move(-frameRect().x(), -frameRect().y()); 945 cutOutRects[i].move(-frameRect().x(), -frameRect().y());
953 } 946 }
954 947
955 } // namespace blink 948 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebPluginContainerImpl.h ('k') | third_party/WebKit/Source/web/WebPluginDocument.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698