blob: 23236c5a3ca0b4b9a4e5bada684b2b3bdf24b347 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/extensions/system_display/display_info_provider_utils.h"
#include "extensions/common/api/system_display.h"
namespace extensions {
namespace {
namespace system_display = api::system_display;
system_display::LayoutPosition GetLayoutPositionFromMojo(
crosapi::mojom::DisplayLayoutPosition position) {
switch (position) {
case crosapi::mojom::DisplayLayoutPosition::kTop:
return system_display::LayoutPosition::LAYOUT_POSITION_TOP;
case crosapi::mojom::DisplayLayoutPosition::kRight:
return system_display::LayoutPosition::LAYOUT_POSITION_RIGHT;
case crosapi::mojom::DisplayLayoutPosition::kBottom:
return system_display::LayoutPosition::LAYOUT_POSITION_BOTTOM;
case crosapi::mojom::DisplayLayoutPosition::kLeft:
return system_display::LayoutPosition::LAYOUT_POSITION_LEFT;
}
NOTREACHED();
return system_display::LayoutPosition::LAYOUT_POSITION_LEFT;
}
} // namespace
void OnGetDisplayLayoutResult(
base::OnceCallback<void(DisplayInfoProvider::DisplayLayoutList)> callback,
crosapi::mojom::DisplayLayoutInfoPtr info) {
DisplayInfoProvider::DisplayLayoutList result;
if (info->layouts) {
for (crosapi::mojom::DisplayLayoutPtr& layout : *info->layouts) {
api::system_display::DisplayLayout display_layout;
display_layout.id = layout->id;
display_layout.parent_id = layout->parent_id;
display_layout.position = GetLayoutPositionFromMojo(layout->position);
display_layout.offset = layout->offset;
result.emplace_back(std::move(display_layout));
}
}
std::move(callback).Run(std::move(result));
}
} // namespace extensions