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/window_controller.h"
6
7 #include "base/values.h"
8 #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
9 #include "chrome/browser/extensions/window_controller_list.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "ui/base/base_window.h"
12 #include "ui/gfx/rect.h"
13
14 namespace extensions {
15
16 ///////////////////////////////////////////////////////////////////////////////
17 // WindowController
18
WindowController(ui::BaseWindow * window,Profile * profile)19 WindowController::WindowController(ui::BaseWindow* window, Profile* profile)
20 : window_(window), profile_(profile) {
21 }
22
~WindowController()23 WindowController::~WindowController() {
24 }
25
GetBrowser() const26 Browser* WindowController::GetBrowser() const {
27 return NULL;
28 }
29
30 namespace keys = tabs_constants;
31
CreateWindowValue() const32 base::DictionaryValue* WindowController::CreateWindowValue() const {
33 base::DictionaryValue* result = new base::DictionaryValue();
34
35 result->SetInteger(keys::kIdKey, GetWindowId());
36 result->SetString(keys::kWindowTypeKey, GetWindowTypeText());
37 result->SetBoolean(keys::kFocusedKey, window()->IsActive());
38 result->SetBoolean(keys::kIncognitoKey, profile_->IsOffTheRecord());
39 result->SetBoolean(keys::kAlwaysOnTopKey, window()->IsAlwaysOnTop());
40
41 std::string window_state;
42 if (window()->IsMinimized()) {
43 window_state = keys::kShowStateValueMinimized;
44 } else if (window()->IsFullscreen()) {
45 window_state = keys::kShowStateValueFullscreen;
46 } else if (window()->IsMaximized()) {
47 window_state = keys::kShowStateValueMaximized;
48 } else {
49 window_state = keys::kShowStateValueNormal;
50 }
51 result->SetString(keys::kShowStateKey, window_state);
52
53 gfx::Rect bounds;
54 if (window()->IsMinimized())
55 bounds = window()->GetRestoredBounds();
56 else
57 bounds = window()->GetBounds();
58 result->SetInteger(keys::kLeftKey, bounds.x());
59 result->SetInteger(keys::kTopKey, bounds.y());
60 result->SetInteger(keys::kWidthKey, bounds.width());
61 result->SetInteger(keys::kHeightKey, bounds.height());
62
63 return result;
64 }
65
66 } // namespace extensions
67