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

Side by Side Diff: ui/gfx/gtk_native_view_id_manager.h

Issue 7328011: Introduce ui.dll / libui.so for the component build. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef UI_GFX_GTK_NATIVE_VIEW_ID_MANAGER_H_ 5 #ifndef UI_GFX_GTK_NATIVE_VIEW_ID_MANAGER_H_
6 #define UI_GFX_GTK_NATIVE_VIEW_ID_MANAGER_H_ 6 #define UI_GFX_GTK_NATIVE_VIEW_ID_MANAGER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 10
11 #include "base/memory/singleton.h" 11 #include "base/memory/singleton.h"
12 #include "base/synchronization/lock.h" 12 #include "base/synchronization/lock.h"
13 #include "ui/gfx/native_widget_types.h" 13 #include "ui/gfx/native_widget_types.h"
14 #include "ui/ui_api.h"
14 15
15 typedef unsigned long XID; 16 typedef unsigned long XID;
16 struct _GtkPreserveWindow; 17 struct _GtkPreserveWindow;
17 18
18 // NativeViewIds are the opaque values which the renderer holds as a reference 19 // NativeViewIds are the opaque values which the renderer holds as a reference
19 // to a window. 20 // to a window.
20 // 21 //
21 // We could make NativeViewIds be the X id of the window. However, at the 22 // We could make NativeViewIds be the X id of the window. However, at the
22 // time when we need to tell the renderer about its NativeViewId, an XID isn't 23 // time when we need to tell the renderer about its NativeViewId, an XID isn't
23 // availible and it goes very much against the grain of the code to make it so. 24 // availible and it goes very much against the grain of the code to make it so.
24 // Also, we worry that GTK might choose to change the underlying X window id 25 // Also, we worry that GTK might choose to change the underlying X window id
25 // when, say, the widget is hidden or repacked. Finally, if we used XIDs then a 26 // when, say, the widget is hidden or repacked. Finally, if we used XIDs then a
26 // compromised renderer could start asking questions about any X windows on the 27 // compromised renderer could start asking questions about any X windows on the
27 // system. 28 // system.
28 // 29 //
29 // Thus, we have this object. It produces random NativeViewIds from GtkWidget 30 // Thus, we have this object. It produces random NativeViewIds from GtkWidget
30 // pointers and observes the various signals from the widget for when an X 31 // pointers and observes the various signals from the widget for when an X
31 // window is created, destroyed etc. Thus it provides a thread safe mapping 32 // window is created, destroyed etc. Thus it provides a thread safe mapping
32 // from NativeViewIds to the current XID for that widget. 33 // from NativeViewIds to the current XID for that widget.
33 class GtkNativeViewManager { 34 class UI_API GtkNativeViewManager {
34 public: 35 public:
35 // Returns the singleton instance. 36 // Returns the singleton instance.
36 static GtkNativeViewManager* GetInstance(); 37 static GtkNativeViewManager* GetInstance();
37 38
38 // Must be called from the UI thread: 39 // Must be called from the UI thread:
39 // 40 //
40 // Return a NativeViewId for the given widget and attach to the various 41 // Return a NativeViewId for the given widget and attach to the various
41 // signals emitted by that widget. The NativeViewId is pseudo-randomly 42 // signals emitted by that widget. The NativeViewId is pseudo-randomly
42 // allocated so that a compromised renderer trying to guess values will fail 43 // allocated so that a compromised renderer trying to guess values will fail
43 // with high probability. The NativeViewId will not be reused for the 44 // with high probability. The NativeViewId will not be reused for the
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // 129 //
129 // An XID will map to NULL, if there is an outstanding reference but the 130 // An XID will map to NULL, if there is an outstanding reference but the
130 // widget was destroyed. In this case, the destruction of the X window 131 // widget was destroyed. In this case, the destruction of the X window
131 // is deferred to the dropping of all references. 132 // is deferred to the dropping of all references.
132 std::map<XID, PermanentXIDInfo> perm_xid_to_info_; 133 std::map<XID, PermanentXIDInfo> perm_xid_to_info_;
133 134
134 DISALLOW_COPY_AND_ASSIGN(GtkNativeViewManager); 135 DISALLOW_COPY_AND_ASSIGN(GtkNativeViewManager);
135 }; 136 };
136 137
137 #endif // UI_GFX_GTK_NATIVE_VIEW_ID_MANAGER_H_ 138 #endif // UI_GFX_GTK_NATIVE_VIEW_ID_MANAGER_H_
OLDNEW
« no previous file with comments | « ui/gfx/gl/gl.gyp ('k') | ui/gfx/gtk_preserve_window.h » ('j') | ui/ui.gyp » ('J')

Powered by Google App Engine
This is Rietveld 408576698