OLD | NEW |
| (Empty) |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/logging.h" | |
6 #include "webkit/glue/plugins/carbon_plugin_window_tracker_mac.h" | |
7 | |
8 CarbonPluginWindowTracker::CarbonPluginWindowTracker() { | |
9 } | |
10 | |
11 CarbonPluginWindowTracker* CarbonPluginWindowTracker::SharedInstance() { | |
12 static CarbonPluginWindowTracker* tracker = new CarbonPluginWindowTracker(); | |
13 return tracker; | |
14 } | |
15 | |
16 WindowRef CarbonPluginWindowTracker::CreateDummyWindowForDelegate( | |
17 OpaquePluginRef delegate) { | |
18 // The real size will be set by the plugin instance, once that size is known. | |
19 Rect window_bounds = { 0, 0, 100, 100 }; | |
20 WindowRef new_ref = NULL; | |
21 if (CreateNewWindow(kDocumentWindowClass, | |
22 kWindowNoTitleBarAttribute, | |
23 &window_bounds, | |
24 &new_ref) == noErr) { | |
25 window_to_delegate_map_[new_ref] = delegate; | |
26 delegate_to_window_map_[delegate] = new_ref; | |
27 } | |
28 return new_ref; | |
29 } | |
30 | |
31 OpaquePluginRef CarbonPluginWindowTracker::GetDelegateForDummyWindow( | |
32 WindowRef window) const { | |
33 WindowToDelegateMap::const_iterator i = window_to_delegate_map_.find(window); | |
34 if (i != window_to_delegate_map_.end()) | |
35 return i->second; | |
36 return NULL; | |
37 } | |
38 | |
39 WindowRef CarbonPluginWindowTracker::GetDummyWindowForDelegate( | |
40 OpaquePluginRef delegate) const { | |
41 DelegateToWindowMap::const_iterator i = | |
42 delegate_to_window_map_.find(delegate); | |
43 if (i != delegate_to_window_map_.end()) | |
44 return i->second; | |
45 return NULL; | |
46 } | |
47 | |
48 void CarbonPluginWindowTracker::DestroyDummyWindowForDelegate( | |
49 OpaquePluginRef delegate, WindowRef window) { | |
50 DCHECK(GetDelegateForDummyWindow(window) == delegate); | |
51 window_to_delegate_map_.erase(window); | |
52 delegate_to_window_map_.erase(delegate); | |
53 if (window) // Check just in case the initial window creation failed. | |
54 DisposeWindow(window); | |
55 } | |
OLD | NEW |