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

Side by Side Diff: chrome/browser/extensions/api/wm/wm_utils.cc

Issue 10824364: [NOT FOR REVIEW] ash: Add some implementation for the window management extension API. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/api/wm/wm_utils.h"
6
7 #include "ash/wm/window_util.h"
8 #include "base/utf_string_conversions.h"
9 #include "chrome/common/extensions/api/experimental_wm.h"
10 #include "ui/aura/client/aura_constants.h"
11 #include "ui/base/ui_base_types.h"
12
13 namespace {
14
15 const char kWindowStateFullscreen[] = "fullscreen";
16 const char kWindowStateMaximized[] = "maximized";
17 const char kWindowStateMinimized[] = "minimized";
18 const char kWindowStateNormal[] = "normal";
19
20 const char kWindowTypeModal[] = "modal";
21 const char kWindowTypeNormal[] = "normal";
22 const char kWindowTypePanel[] = "panel";
23
24 }
25
26 namespace extensions {
27 namespace api {
28 namespace wm {
29
30 WindowIdTracker::WindowIdTracker()
31 : next_window_id_(1) {
32 }
33
34 WindowIdTracker::~WindowIdTracker() {}
35
36 // static
37 WindowIdTracker* WindowIdTracker::GetInstance() {
38 return Singleton<WindowIdTracker>::get();
39 }
40
41 int WindowIdTracker::GetWindowExtensionId(gfx::NativeWindow window) {
42 if (!lookup_.count(window)) {
43 lookup_[window] = next_window_id_;
44 reverse_lookup_[next_window_id_] = window;
45 ++next_window_id_;
46 }
47 return lookup_[window];
48 }
49
50 void WindowIdTracker::UntrackWindow(gfx::NativeWindow window) {
51 int window_extension_id = lookup_[window];
52 lookup_.erase(window);
53 reverse_lookup_.erase(window_extension_id);
54 }
55
56 namespace utils {
57
58 #if defined(USE_ASH)
59 void NativeWindowToExtensionWindow(
60 gfx::NativeWindow window,
61 experimental_wm::WmWindow* extension_window) {
62 if (!window) {
63 extension_window->id = -1;
64 return;
65 }
66
67 extension_window->id =
68 WindowIdTracker::GetInstance()->GetWindowExtensionId(window);
69 extension_window->title = UTF16ToUTF8(window->title());
70
71 if (window->GetProperty(aura::client::kModalKey) == ui::MODAL_TYPE_WINDOW)
72 extension_window->type = kWindowTypeModal;
73 else if (window->type() == aura::client::WINDOW_TYPE_PANEL)
74 extension_window->type = kWindowTypePanel;
75 else
76 extension_window->type = kWindowTypeNormal;
77
78 if (ash::wm::IsWindowMaximized(window))
79 extension_window->state = kWindowStateMaximized;
80 else if (ash::wm::IsWindowMinimized(window))
81 extension_window->state = kWindowStateMinimized;
82 else if (ash::wm::IsWindowFullscreen(window))
83 extension_window->state = kWindowStateFullscreen;
84 else
85 extension_window->state = kWindowStateNormal;
86
87 gfx::Rect bounds = window->bounds();
88 extension_window->bounds.x = bounds.x();
89 extension_window->bounds.y = bounds.y();
90 extension_window->bounds.width = bounds.width();
91 extension_window->bounds.height = bounds.height();
92
93 extension_window->active = ash::wm::IsActiveWindow(window);
94 }
95 #endif // defined(USE_ASH)
96
97 } // namespace utils
98 } // namespace wm
99 } // namespace api
100 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/wm/wm_utils.h ('k') | chrome/browser/ui/ash/window_manager_extension.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698