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

Side by Side Diff: ash/display/display_layout.cc

Issue 1150913002: Save and restore unified mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix leak Created 5 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 unified diff | Download patch
« no previous file with comments | « ash/display/display_layout.h ('k') | ash/display/display_layout_store.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/display/display_layout.h" 5 #include "ash/display/display_layout.h"
6 6
7 #include "ash/display/display_pref_util.h" 7 #include "ash/display/display_pref_util.h"
8 #include "base/json/json_value_converter.h" 8 #include "base/json/json_value_converter.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/string_piece.h" 11 #include "base/strings/string_piece.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "ui/gfx/display.h" 14 #include "ui/gfx/display.h"
15 15
16 namespace ash { 16 namespace ash {
17 namespace { 17 namespace {
18 18
19 // The maximum value for 'offset' in DisplayLayout in case of outliers. Need 19 // The maximum value for 'offset' in DisplayLayout in case of outliers. Need
20 // to change this value in case to support even larger displays. 20 // to change this value in case to support even larger displays.
21 const int kMaxValidOffset = 10000; 21 const int kMaxValidOffset = 10000;
22 22
23 // Persistent key names 23 // Persistent key names
24 const char kPositionKey[] = "position"; 24 const char kPositionKey[] = "position";
25 const char kOffsetKey[] = "offset"; 25 const char kOffsetKey[] = "offset";
26 const char kMirroredKey[] = "mirrored"; 26 const char kMirroredKey[] = "mirrored";
27 const char kDefaultUnifiedKey[] = "default_unified";
27 const char kPrimaryIdKey[] = "primary-id"; 28 const char kPrimaryIdKey[] = "primary-id";
28 29
29 typedef std::map<DisplayLayout::Position, std::string> PositionToStringMap; 30 typedef std::map<DisplayLayout::Position, std::string> PositionToStringMap;
30 31
31 const PositionToStringMap* GetPositionToStringMap() { 32 const PositionToStringMap* GetPositionToStringMap() {
32 static const PositionToStringMap* map = CreateToStringMap( 33 static const PositionToStringMap* map = CreateToStringMap(
33 DisplayLayout::TOP, "top", 34 DisplayLayout::TOP, "top",
34 DisplayLayout::BOTTOM, "bottom", 35 DisplayLayout::BOTTOM, "bottom",
35 DisplayLayout::RIGHT, "right", 36 DisplayLayout::RIGHT, "right",
36 DisplayLayout::LEFT, "left"); 37 DisplayLayout::LEFT, "left");
(...skipping 25 matching lines...) Expand all
62 63
63 // static 64 // static
64 DisplayLayout DisplayLayout::FromInts(int position, int offsets) { 65 DisplayLayout DisplayLayout::FromInts(int position, int offsets) {
65 return DisplayLayout(static_cast<Position>(position), offsets); 66 return DisplayLayout(static_cast<Position>(position), offsets);
66 } 67 }
67 68
68 DisplayLayout::DisplayLayout() 69 DisplayLayout::DisplayLayout()
69 : position(RIGHT), 70 : position(RIGHT),
70 offset(0), 71 offset(0),
71 mirrored(false), 72 mirrored(false),
73 default_unified(false),
72 primary_id(gfx::Display::kInvalidDisplayID) { 74 primary_id(gfx::Display::kInvalidDisplayID) {
73 } 75 }
74 76
75 DisplayLayout::DisplayLayout(DisplayLayout::Position position, int offset) 77 DisplayLayout::DisplayLayout(DisplayLayout::Position position, int offset)
76 : position(position), 78 : position(position),
77 offset(offset), 79 offset(offset),
78 mirrored(false), 80 mirrored(false),
81 default_unified(false),
79 primary_id(gfx::Display::kInvalidDisplayID) { 82 primary_id(gfx::Display::kInvalidDisplayID) {
80 DCHECK_LE(TOP, position); 83 DCHECK_LE(TOP, position);
81 DCHECK_GE(LEFT, position); 84 DCHECK_GE(LEFT, position);
82 85
83 // Set the default value to |position| in case position is invalid. DCHECKs 86 // Set the default value to |position| in case position is invalid. DCHECKs
84 // above doesn't stop in Release builds. 87 // above doesn't stop in Release builds.
85 if (TOP > position || LEFT < position) 88 if (TOP > position || LEFT < position)
86 this->position = RIGHT; 89 this->position = RIGHT;
87 90
88 DCHECK_GE(kMaxValidOffset, abs(offset)); 91 DCHECK_GE(kMaxValidOffset, abs(offset));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 bool DisplayLayout::ConvertToValue(const DisplayLayout& layout, 123 bool DisplayLayout::ConvertToValue(const DisplayLayout& layout,
121 base::Value* value) { 124 base::Value* value) {
122 base::DictionaryValue* dict_value = NULL; 125 base::DictionaryValue* dict_value = NULL;
123 if (!value->GetAsDictionary(&dict_value) || dict_value == NULL) 126 if (!value->GetAsDictionary(&dict_value) || dict_value == NULL)
124 return false; 127 return false;
125 128
126 const std::string position_str = GetStringFromPosition(layout.position); 129 const std::string position_str = GetStringFromPosition(layout.position);
127 dict_value->SetString(kPositionKey, position_str); 130 dict_value->SetString(kPositionKey, position_str);
128 dict_value->SetInteger(kOffsetKey, layout.offset); 131 dict_value->SetInteger(kOffsetKey, layout.offset);
129 dict_value->SetBoolean(kMirroredKey, layout.mirrored); 132 dict_value->SetBoolean(kMirroredKey, layout.mirrored);
133 dict_value->SetBoolean(kDefaultUnifiedKey, layout.default_unified);
130 dict_value->SetString(kPrimaryIdKey, base::Int64ToString(layout.primary_id)); 134 dict_value->SetString(kPrimaryIdKey, base::Int64ToString(layout.primary_id));
131 return true; 135 return true;
132 } 136 }
133 137
134 std::string DisplayLayout::ToString() const { 138 std::string DisplayLayout::ToString() const {
135 const std::string position_str = GetStringFromPosition(position); 139 const std::string position_str = GetStringFromPosition(position);
136 return base::StringPrintf( 140 return base::StringPrintf("%s, %d%s%s", position_str.c_str(), offset,
137 "%s, %d%s", 141 mirrored ? ", mirrored" : "",
138 position_str.c_str(), offset, mirrored ? ", mirrored" : ""); 142 default_unified ? ", unified" : "");
139 } 143 }
140 144
141 // static 145 // static
142 void DisplayLayout::RegisterJSONConverter( 146 void DisplayLayout::RegisterJSONConverter(
143 base::JSONValueConverter<DisplayLayout>* converter) { 147 base::JSONValueConverter<DisplayLayout>* converter) {
144 converter->RegisterCustomField<Position>( 148 converter->RegisterCustomField<Position>(
145 kPositionKey, &DisplayLayout::position, &GetPositionFromString); 149 kPositionKey, &DisplayLayout::position, &GetPositionFromString);
146 converter->RegisterIntField(kOffsetKey, &DisplayLayout::offset); 150 converter->RegisterIntField(kOffsetKey, &DisplayLayout::offset);
147 converter->RegisterBoolField(kMirroredKey, &DisplayLayout::mirrored); 151 converter->RegisterBoolField(kMirroredKey, &DisplayLayout::mirrored);
152 converter->RegisterBoolField(kDefaultUnifiedKey,
153 &DisplayLayout::default_unified);
148 converter->RegisterCustomField<int64>( 154 converter->RegisterCustomField<int64>(
149 kPrimaryIdKey, &DisplayLayout::primary_id, &GetDisplayIdFromString); 155 kPrimaryIdKey, &DisplayLayout::primary_id, &GetDisplayIdFromString);
150 } 156 }
151 157
152 } // namespace ash 158 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/display_layout.h ('k') | ash/display/display_layout_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698