[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 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 | |||||
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 5 | #include "chrome/browser/extensions/window_controller.h" |
[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 6 | |
avi | a2f4804a | 2015-12-24 23:11:13 | [diff] [blame] | 7 | #include <stddef.h> |
8 | |||||
dcheng | 85f24da | 2016-05-20 22:20:26 | [diff] [blame] | 9 | #include <memory> |
10 | |||||
[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 11 | #include "base/values.h" |
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 12 | #include "chrome/browser/extensions/window_controller_list.h" |
[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 13 | #include "chrome/browser/profiles/profile.h" |
lionel.g.landwerlin | 56b2a72 | 2015-08-06 00:04:10 | [diff] [blame] | 14 | #include "chrome/common/extensions/api/windows.h" |
Ivan Sandrk | c30341b | 2017-11-09 19:13:26 | [diff] [blame] | 15 | |
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 16 | namespace extensions { |
17 | |||||
[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 18 | /////////////////////////////////////////////////////////////////////////////// |
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 19 | // WindowController |
[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 20 | |
lionel.g.landwerlin | 56b2a72 | 2015-08-06 00:04:10 | [diff] [blame] | 21 | // static |
22 | WindowController::TypeFilter WindowController::GetAllWindowFilter() { | ||||
23 | // This needs to be updated if there is a change to | ||||
24 | // extensions::api::windows:WindowType. | ||||
avi | 0cc1cac | 2015-11-24 19:12:13 | [diff] [blame] | 25 | static_assert(api::windows::WINDOW_TYPE_LAST == 5, |
26 | "Update extensions WindowController to match WindowType"); | ||||
lionel.g.landwerlin | 56b2a72 | 2015-08-06 00:04:10 | [diff] [blame] | 27 | return ((1 << api::windows::WINDOW_TYPE_NORMAL) | |
28 | (1 << api::windows::WINDOW_TYPE_PANEL) | | ||||
29 | (1 << api::windows::WINDOW_TYPE_POPUP) | | ||||
30 | (1 << api::windows::WINDOW_TYPE_APP) | | ||||
31 | (1 << api::windows::WINDOW_TYPE_DEVTOOLS)); | ||||
32 | } | ||||
33 | |||||
34 | // static | ||||
lionel.g.landwerlin | 56b2a72 | 2015-08-06 00:04:10 | [diff] [blame] | 35 | WindowController::TypeFilter WindowController::GetFilterFromWindowTypes( |
36 | const std::vector<api::windows::WindowType>& types) { | ||||
lionel.g.landwerlin | 63f0e25e | 2015-08-24 21:26:57 | [diff] [blame] | 37 | WindowController::TypeFilter filter = kNoWindowFilter; |
lionel.g.landwerlin | 56b2a72 | 2015-08-06 00:04:10 | [diff] [blame] | 38 | for (auto& window_type : types) |
39 | filter |= 1 << window_type; | ||||
40 | return filter; | ||||
41 | } | ||||
42 | |||||
lionel.g.landwerlin | 63f0e25e | 2015-08-24 21:26:57 | [diff] [blame] | 43 | // static |
44 | WindowController::TypeFilter WindowController::GetFilterFromWindowTypesValues( | ||||
45 | const base::ListValue* types) { | ||||
46 | WindowController::TypeFilter filter = WindowController::kNoWindowFilter; | ||||
47 | if (!types) | ||||
48 | return filter; | ||||
Daniel Cheng | 354945d | 2022-02-02 23:39:17 | [diff] [blame] | 49 | for (const base::Value& type : types->GetListDeprecated()) { |
Maks Orlovich | ab5bbab | 2021-11-26 16:30:35 | [diff] [blame] | 50 | const std::string* window_type = type.GetIfString(); |
51 | if (window_type) | ||||
52 | filter |= 1 << api::windows::ParseWindowType(*window_type); | ||||
lionel.g.landwerlin | 63f0e25e | 2015-08-24 21:26:57 | [diff] [blame] | 53 | } |
54 | return filter; | ||||
55 | } | ||||
56 | |||||
[email protected] | 5f39adc | 2013-05-23 11:50:46 | [diff] [blame] | 57 | WindowController::WindowController(ui::BaseWindow* window, Profile* profile) |
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 58 | : window_(window), profile_(profile) { |
[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 59 | } |
60 | |||||
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 61 | WindowController::~WindowController() { |
[email protected] | 41d9faf | 2012-02-28 23:46:02 | [diff] [blame] | 62 | } |
63 | |||||
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 64 | Browser* WindowController::GetBrowser() const { |
David Bienvenu | 27be793 | 2020-08-20 20:41:27 | [diff] [blame] | 65 | return nullptr; |
[email protected] | b51f3562 | 2012-05-05 22:01:43 | [diff] [blame] | 66 | } |
67 | |||||
lionel.g.landwerlin | 56b2a72 | 2015-08-06 00:04:10 | [diff] [blame] | 68 | bool WindowController::MatchesFilter(TypeFilter filter) const { |
69 | TypeFilter type = 1 << api::windows::ParseWindowType(GetWindowTypeText()); | ||||
70 | return (type & filter) != 0; | ||||
71 | } | ||||
72 | |||||
Sangwoo Ko | 26256e92 | 2020-07-31 05:12:40 | [diff] [blame] | 73 | void WindowController::NotifyWindowBoundsChanged() { |
74 | WindowControllerList::GetInstance()->NotifyWindowBoundsChanged(this); | ||||
75 | } | ||||
76 | |||||
[email protected] | 44f4b13 | 2012-07-17 20:36:57 | [diff] [blame] | 77 | } // namespace extensions |