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

Unified Diff: ui/views/mus/display_list.h

Issue 1984393002: Refactors std::vector<Display> out of ScreenMus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix deps and DEPS Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: ui/views/mus/display_list.h
diff --git a/ui/views/mus/display_list.h b/ui/views/mus/display_list.h
new file mode 100644
index 0000000000000000000000000000000000000000..19b0ac97f11bde342082075527285a71d31830d6
--- /dev/null
+++ b/ui/views/mus/display_list.h
@@ -0,0 +1,69 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_VIEWS_MUS_DISPLAY_LIST_H_
+#define UI_VIEWS_MUS_DISPLAY_LIST_H_
+
+#include <stdint.h>
+
+#include <vector>
+
+#include "base/observer_list.h"
+#include "mojo/public/cpp/bindings/binding.h"
+#include "ui/display/display.h"
+#include "ui/views/mus/mus_export.h"
+
+namespace display {
+class Display;
+class DisplayObserver;
+}
+
+namespace views {
+
+// Maintains an ordered list of display::Displays as well as operations to add,
+// remove and update said list. Additionally maintains display::DisplayObservers
+// and updates them as appropriate.
+class VIEWS_MUS_EXPORT DisplayList {
+ public:
+ using Displays = std::vector<display::Display>;
+
+ enum class Type {
+ PRIMARY,
+ NOT_PRIMARY,
+ };
+
+ DisplayList();
+ ~DisplayList();
+
+ void AddObserver(display::DisplayObserver* observer);
+ void RemoveObserver(display::DisplayObserver* observer);
+
+ const Displays& displays() const { return displays_; }
+
+ Displays::const_iterator FindDisplayById(int64_t id) const;
+ Displays::iterator FindDisplayById(int64_t id);
+
+ Displays::const_iterator GetPrimaryDisplayIterator() const;
+
+ // Updates the cached id based on display.id() as well as whether the Display
+ // is the primary display.
+ void UpdateDisplay(const display::Display& display, Type type);
+
+ // Adds a new Display.
+ void AddDisplay(const display::Display& display, Type type);
+
+ // Removes the Display with the specified id.
+ void RemoveDisplay(int64_t id);
+
+ private:
+ std::vector<display::Display> displays_;
+ int primary_display_index_ = -1;
+ base::ObserverList<display::DisplayObserver> observers_;
+
+ DISALLOW_COPY_AND_ASSIGN(DisplayList);
+};
+
+} // namespace views
+
+#endif // UI_VIEWS_MUS_DISPLAY_LIST_H_

Powered by Google App Engine
This is Rietveld 408576698