| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |