OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/child/npapi/plugin_host.h" | 5 #include "content/child/npapi/plugin_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 // pass an update event or a paint message to the plugin. After calling | 457 // pass an update event or a paint message to the plugin. After calling |
458 // this method, the plugin receives a paint message asynchronously. | 458 // this method, the plugin receives a paint message asynchronously. |
459 | 459 |
460 // The browser redraws invalid areas of the document and any windowless | 460 // The browser redraws invalid areas of the document and any windowless |
461 // plugins at regularly timed intervals. To force a paint message, the | 461 // plugins at regularly timed intervals. To force a paint message, the |
462 // plugin can call NPN_ForceRedraw after calling this method. | 462 // plugin can call NPN_ForceRedraw after calling this method. |
463 | 463 |
464 scoped_refptr<PluginInstance> plugin(FindInstance(id)); | 464 scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
465 if (plugin.get() && plugin->webplugin()) { | 465 if (plugin.get() && plugin->webplugin()) { |
466 if (invalidRect) { | 466 if (invalidRect) { |
467 #if defined(OS_WIN) | |
468 if (!plugin->windowless()) { | |
469 RECT rect = {0}; | |
470 rect.left = invalidRect->left; | |
471 rect.right = invalidRect->right; | |
472 rect.top = invalidRect->top; | |
473 rect.bottom = invalidRect->bottom; | |
474 ::InvalidateRect(plugin->window_handle(), &rect, false); | |
475 return; | |
476 } | |
477 #endif | |
478 gfx::Rect rect(invalidRect->left, | 467 gfx::Rect rect(invalidRect->left, |
479 invalidRect->top, | 468 invalidRect->top, |
480 invalidRect->right - invalidRect->left, | 469 invalidRect->right - invalidRect->left, |
481 invalidRect->bottom - invalidRect->top); | 470 invalidRect->bottom - invalidRect->top); |
482 plugin->webplugin()->InvalidateRect(rect); | 471 plugin->webplugin()->InvalidateRect(rect); |
483 } else { | 472 } else { |
484 plugin->webplugin()->Invalidate(); | 473 plugin->webplugin()->Invalidate(); |
485 } | 474 } |
486 } | 475 } |
487 } | 476 } |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 | 651 |
663 NPError NPN_SetValue(NPP id, NPPVariable variable, void* value) { | 652 NPError NPN_SetValue(NPP id, NPPVariable variable, void* value) { |
664 // Allows the plugin to set various modes | 653 // Allows the plugin to set various modes |
665 | 654 |
666 scoped_refptr<PluginInstance> plugin(FindInstance(id)); | 655 scoped_refptr<PluginInstance> plugin(FindInstance(id)); |
667 if (!plugin.get()) { | 656 if (!plugin.get()) { |
668 NOTREACHED(); | 657 NOTREACHED(); |
669 return NPERR_INVALID_INSTANCE_ERROR; | 658 return NPERR_INVALID_INSTANCE_ERROR; |
670 } | 659 } |
671 switch(variable) { | 660 switch(variable) { |
672 case NPPVpluginWindowBool: { | |
673 // Sets windowless mode for display of the plugin | |
674 // Note: the documentation at | |
675 // http://developer.mozilla.org/en/docs/NPN_SetValue is wrong. When | |
676 // value is NULL, the mode is set to true. This is the same way Mozilla | |
677 // works. | |
678 plugin->set_windowless(value == 0); | |
679 return NPERR_NO_ERROR; | |
680 } | |
681 case NPPVpluginTransparentBool: { | 661 case NPPVpluginTransparentBool: { |
682 // Sets transparent mode for display of the plugin | 662 // Sets transparent mode for display of the plugin |
683 // | 663 // |
684 // Transparent plugins require the browser to paint the background | 664 // Transparent plugins require the browser to paint the background |
685 // before having the plugin paint. By default, windowless plugins | 665 // before having the plugin paint. By default, windowless plugins |
686 // are transparent. Making a windowless plugin opaque means that | 666 // are transparent. Making a windowless plugin opaque means that |
687 // the plugin does not require the browser to paint the background. | 667 // the plugin does not require the browser to paint the background. |
688 bool mode = (value != 0); | 668 bool mode = (value != 0); |
689 plugin->set_transparent(mode); | 669 plugin->set_transparent(mode); |
690 return NPERR_NO_ERROR; | 670 return NPERR_NO_ERROR; |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 NPBool NPN_UnfocusInstance(NPP id, NPFocusDirection direction) { | 909 NPBool NPN_UnfocusInstance(NPP id, NPFocusDirection direction) { |
930 // TODO: Implement advanced key handling: http://crbug.com/46578 | 910 // TODO: Implement advanced key handling: http://crbug.com/46578 |
931 NOTIMPLEMENTED(); | 911 NOTIMPLEMENTED(); |
932 return false; | 912 return false; |
933 } | 913 } |
934 | 914 |
935 void NPN_URLRedirectResponse(NPP instance, void* notify_data, NPBool allow) { | 915 void NPN_URLRedirectResponse(NPP instance, void* notify_data, NPBool allow) { |
936 } | 916 } |
937 | 917 |
938 } // extern "C" | 918 } // extern "C" |
OLD | NEW |