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

Side by Side Diff: content/child/npapi/webplugin_delegate_impl_win.cc

Issue 557893003: Stop using an atom to store plugin name/version on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « content/browser/plugin_service_impl.cc ('k') | content/common/plugin_constants_win.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/webplugin_delegate_impl.h" 5 #include "content/child/npapi/webplugin_delegate_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 // window correctly in the given parent window (RenderWidgetHostViewWin or 492 // window correctly in the given parent window (RenderWidgetHostViewWin or
493 // RenderWidgetHostViewAura), this window should be a child window of the 493 // RenderWidgetHostViewAura), this window should be a child window of the
494 // parent window. To satisfy both of the above conditions, this code once 494 // parent window. To satisfy both of the above conditions, this code once
495 // creates a top-level window and change it to a child window of the parent 495 // creates a top-level window and change it to a child window of the parent
496 // window (in the browser process). 496 // window (in the browser process).
497 SetWindowLongPtr(windowed_handle_, GWL_STYLE, 497 SetWindowLongPtr(windowed_handle_, GWL_STYLE,
498 WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS); 498 WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
499 499
500 BOOL result = SetProp(windowed_handle_, kWebPluginDelegateProperty, this); 500 BOOL result = SetProp(windowed_handle_, kWebPluginDelegateProperty, this);
501 DCHECK(result == TRUE) << "SetProp failed, last error = " << GetLastError(); 501 DCHECK(result == TRUE) << "SetProp failed, last error = " << GetLastError();
502 // Get the name and version of the plugin, create atoms and set them in a
503 // window property. Use atoms so that other processes can access the name and
504 // version of the plugin that this window is hosting.
505 if (instance_ != NULL) {
506 PluginLib* plugin_lib = instance()->plugin_lib();
507 if (plugin_lib != NULL) {
508 std::wstring plugin_name = plugin_lib->plugin_info().name;
509 if (!plugin_name.empty()) {
510 ATOM plugin_name_atom = GlobalAddAtomW(plugin_name.c_str());
511 DCHECK_NE(0, plugin_name_atom) << " last error = " <<
512 GetLastError();
513 result = SetProp(windowed_handle_,
514 kPluginNameAtomProperty,
515 reinterpret_cast<HANDLE>(plugin_name_atom));
516 DCHECK(result == TRUE) << "SetProp failed, last error = " <<
517 GetLastError();
518 }
519 base::string16 plugin_version = plugin_lib->plugin_info().version;
520 if (!plugin_version.empty()) {
521 ATOM plugin_version_atom = GlobalAddAtomW(plugin_version.c_str());
522 DCHECK_NE(0, plugin_version_atom);
523 result = SetProp(windowed_handle_,
524 kPluginVersionAtomProperty,
525 reinterpret_cast<HANDLE>(plugin_version_atom));
526 DCHECK(result == TRUE) << "SetProp failed, last error = " <<
527 GetLastError();
528 }
529 }
530 }
531 502
532 // Calling SetWindowLongPtrA here makes the window proc ASCII, which is 503 // Calling SetWindowLongPtrA here makes the window proc ASCII, which is
533 // required by at least the Shockwave Director plug-in. 504 // required by at least the Shockwave Director plug-in.
534 SetWindowLongPtrA(windowed_handle_, 505 SetWindowLongPtrA(windowed_handle_,
535 GWLP_WNDPROC, 506 GWLP_WNDPROC,
536 reinterpret_cast<LONG_PTR>(DefWindowProcA)); 507 reinterpret_cast<LONG_PTR>(DefWindowProcA));
537 508
538 return true; 509 return true;
539 } 510 }
540 511
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 // above. This will also destroy the plugin window. Before attempting to 991 // above. This will also destroy the plugin window. Before attempting to
1021 // access the WebPluginDelegateImpl instance we validate if the window is 992 // access the WebPluginDelegateImpl instance we validate if the window is
1022 // still valid. 993 // still valid.
1023 if (::IsWindow(hwnd)) 994 if (::IsWindow(hwnd))
1024 delegate->is_calling_wndproc = false; 995 delegate->is_calling_wndproc = false;
1025 996
1026 g_current_plugin_instance = last_plugin_instance; 997 g_current_plugin_instance = last_plugin_instance;
1027 998
1028 if (message == WM_NCDESTROY) { 999 if (message == WM_NCDESTROY) {
1029 RemoveProp(hwnd, kWebPluginDelegateProperty); 1000 RemoveProp(hwnd, kWebPluginDelegateProperty);
1030 ATOM plugin_name_atom = reinterpret_cast<ATOM>(
1031 RemoveProp(hwnd, kPluginNameAtomProperty));
1032 if (plugin_name_atom != 0)
1033 GlobalDeleteAtom(plugin_name_atom);
1034 ATOM plugin_version_atom = reinterpret_cast<ATOM>(
1035 RemoveProp(hwnd, kPluginVersionAtomProperty));
1036 if (plugin_version_atom != 0)
1037 GlobalDeleteAtom(plugin_version_atom);
1038 ClearThrottleQueueForWindow(hwnd); 1001 ClearThrottleQueueForWindow(hwnd);
1039 } 1002 }
1040 } 1003 }
1041 if (::IsWindow(hwnd)) 1004 if (::IsWindow(hwnd))
1042 delegate->last_message_ = old_message; 1005 delegate->last_message_ = old_message;
1043 return result; 1006 return result;
1044 } 1007 }
1045 1008
1046 void WebPluginDelegateImpl::WindowlessUpdateGeometry( 1009 void WebPluginDelegateImpl::WindowlessUpdateGeometry(
1047 const gfx::Rect& window_rect, 1010 const gfx::Rect& window_rect,
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1522 case WM_RBUTTONUP: 1485 case WM_RBUTTONUP:
1523 ::ReleaseCapture(); 1486 ::ReleaseCapture();
1524 break; 1487 break;
1525 1488
1526 default: 1489 default:
1527 break; 1490 break;
1528 } 1491 }
1529 } 1492 }
1530 1493
1531 } // namespace content 1494 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/plugin_service_impl.cc ('k') | content/common/plugin_constants_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698