blob: 4760c5652e151fc4644b4ddf904a761df8d7a117 [file] [log] [blame]
// 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 ASH_PUBLIC_CPP_SHELF_STRUCT_MOJOM_TRAITS_H_
#define ASH_PUBLIC_CPP_SHELF_STRUCT_MOJOM_TRAITS_H_
#include <string>
#include "ash/public/cpp/ash_public_export.h"
#include "ash/public/cpp/shelf_item.h"
#include "ash/public/cpp/shelf_types.h"
#include "ash/public/interfaces/shelf.mojom-shared.h"
using ash::ShelfItem;
namespace mojo {
template <>
struct EnumTraits<ash::mojom::ShelfAction, ash::ShelfAction> {
static ash::mojom::ShelfAction ToMojom(ash::ShelfAction input) {
switch (input) {
case ash::SHELF_ACTION_NONE:
return ash::mojom::ShelfAction::NONE;
case ash::SHELF_ACTION_NEW_WINDOW_CREATED:
return ash::mojom::ShelfAction::WINDOW_CREATED;
case ash::SHELF_ACTION_WINDOW_ACTIVATED:
return ash::mojom::ShelfAction::WINDOW_ACTIVATED;
case ash::SHELF_ACTION_WINDOW_MINIMIZED:
return ash::mojom::ShelfAction::WINDOW_MINIMIZED;
case ash::SHELF_ACTION_APP_LIST_SHOWN:
return ash::mojom::ShelfAction::APP_LIST_SHOWN;
case ash::SHELF_ACTION_APP_LIST_DISMISSED:
return ash::mojom::ShelfAction::APP_LIST_DISMISSED;
}
NOTREACHED();
return ash::mojom::ShelfAction::NONE;
}
static bool FromMojom(ash::mojom::ShelfAction input, ash::ShelfAction* out) {
switch (input) {
case ash::mojom::ShelfAction::NONE:
*out = ash::SHELF_ACTION_NONE;
return true;
case ash::mojom::ShelfAction::WINDOW_CREATED:
*out = ash::SHELF_ACTION_NEW_WINDOW_CREATED;
return true;
case ash::mojom::ShelfAction::WINDOW_ACTIVATED:
*out = ash::SHELF_ACTION_WINDOW_ACTIVATED;
return true;
case ash::mojom::ShelfAction::WINDOW_MINIMIZED:
*out = ash::SHELF_ACTION_WINDOW_MINIMIZED;
return true;
case ash::mojom::ShelfAction::APP_LIST_SHOWN:
*out = ash::SHELF_ACTION_APP_LIST_SHOWN;
return true;
case ash::mojom::ShelfAction::APP_LIST_DISMISSED:
*out = ash::SHELF_ACTION_APP_LIST_DISMISSED;
return true;
}
NOTREACHED();
return false;
}
};
template <>
struct EnumTraits<ash::mojom::ShelfItemStatus, ash::ShelfItemStatus> {
static ash::mojom::ShelfItemStatus ToMojom(ash::ShelfItemStatus input) {
switch (input) {
case ash::STATUS_CLOSED:
return ash::mojom::ShelfItemStatus::CLOSED;
case ash::STATUS_RUNNING:
return ash::mojom::ShelfItemStatus::RUNNING;
case ash::STATUS_ATTENTION:
return ash::mojom::ShelfItemStatus::ATTENTION;
}
NOTREACHED();
return ash::mojom::ShelfItemStatus::CLOSED;
}
static bool FromMojom(ash::mojom::ShelfItemStatus input,
ash::ShelfItemStatus* out) {
switch (input) {
case ash::mojom::ShelfItemStatus::CLOSED:
*out = ash::STATUS_CLOSED;
return true;
case ash::mojom::ShelfItemStatus::RUNNING:
*out = ash::STATUS_RUNNING;
return true;
return true;
case ash::mojom::ShelfItemStatus::ATTENTION:
*out = ash::STATUS_ATTENTION;
return true;
}
NOTREACHED();
return false;
}
};
template <>
struct EnumTraits<ash::mojom::ShelfItemType, ash::ShelfItemType> {
static ash::mojom::ShelfItemType ToMojom(ash::ShelfItemType input) {
switch (input) {
case ash::TYPE_PINNED_APP:
return ash::mojom::ShelfItemType::PINNED_APP;
case ash::TYPE_APP_LIST:
return ash::mojom::ShelfItemType::APP_LIST;
case ash::TYPE_BROWSER_SHORTCUT:
return ash::mojom::ShelfItemType::BROWSER;
case ash::TYPE_APP:
return ash::mojom::ShelfItemType::APP;
case ash::TYPE_DIALOG:
return ash::mojom::ShelfItemType::DIALOG;
case ash::TYPE_BACK_BUTTON:
return ash::mojom::ShelfItemType::BACK_BUTTON;
case ash::TYPE_UNDEFINED:
return ash::mojom::ShelfItemType::UNDEFINED;
}
NOTREACHED();
return ash::mojom::ShelfItemType::UNDEFINED;
}
static bool FromMojom(ash::mojom::ShelfItemType input,
ash::ShelfItemType* out) {
switch (input) {
case ash::mojom::ShelfItemType::PINNED_APP:
*out = ash::TYPE_PINNED_APP;
return true;
case ash::mojom::ShelfItemType::APP_LIST:
*out = ash::TYPE_APP_LIST;
return true;
case ash::mojom::ShelfItemType::BROWSER:
*out = ash::TYPE_BROWSER_SHORTCUT;
return true;
case ash::mojom::ShelfItemType::APP:
*out = ash::TYPE_APP;
return true;
case ash::mojom::ShelfItemType::DIALOG:
*out = ash::TYPE_DIALOG;
return true;
case ash::mojom::ShelfItemType::BACK_BUTTON:
*out = ash::TYPE_BACK_BUTTON;
return true;
case ash::mojom::ShelfItemType::UNDEFINED:
*out = ash::TYPE_UNDEFINED;
return true;
}
NOTREACHED();
return false;
}
};
template <>
struct EnumTraits<ash::mojom::ShelfLaunchSource, ash::ShelfLaunchSource> {
static ash::mojom::ShelfLaunchSource ToMojom(ash::ShelfLaunchSource input) {
switch (input) {
case ash::LAUNCH_FROM_UNKNOWN:
return ash::mojom::ShelfLaunchSource::UNKNOWN;
case ash::LAUNCH_FROM_APP_LIST:
return ash::mojom::ShelfLaunchSource::APP_LIST;
case ash::LAUNCH_FROM_APP_LIST_SEARCH:
return ash::mojom::ShelfLaunchSource::APP_LIST_SEARCH;
case ash::LAUNCH_FROM_SHELF:
return ash::mojom::ShelfLaunchSource::SHELF;
}
NOTREACHED();
return ash::mojom::ShelfLaunchSource::UNKNOWN;
}
static bool FromMojom(ash::mojom::ShelfLaunchSource input,
ash::ShelfLaunchSource* out) {
switch (input) {
case ash::mojom::ShelfLaunchSource::UNKNOWN:
*out = ash::LAUNCH_FROM_UNKNOWN;
return true;
case ash::mojom::ShelfLaunchSource::APP_LIST:
*out = ash::LAUNCH_FROM_APP_LIST;
return true;
case ash::mojom::ShelfLaunchSource::APP_LIST_SEARCH:
*out = ash::LAUNCH_FROM_APP_LIST_SEARCH;
return true;
case ash::mojom::ShelfLaunchSource::SHELF:
*out = ash::LAUNCH_FROM_SHELF;
return true;
}
NOTREACHED();
return false;
}
};
template <>
struct EnumTraits<ash::mojom::ShelfAutoHideBehavior,
ash::ShelfAutoHideBehavior> {
static ash::mojom::ShelfAutoHideBehavior ToMojom(
ash::ShelfAutoHideBehavior input) {
switch (input) {
case ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
return ash::mojom::ShelfAutoHideBehavior::
SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
case ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
return ash::mojom::ShelfAutoHideBehavior::
SHELF_AUTO_HIDE_BEHAVIOR_NEVER;
case ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
return ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN;
}
NOTREACHED();
return ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
}
static bool FromMojom(ash::mojom::ShelfAutoHideBehavior input,
ash::ShelfAutoHideBehavior* out) {
switch (input) {
case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
*out = ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
return true;
case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
*out = ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER;
return true;
case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
*out = ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN;
return true;
}
NOTREACHED();
return false;
}
};
template <>
struct ASH_PUBLIC_EXPORT
StructTraits<ash::mojom::ShelfIDDataView, ash::ShelfID> {
static const std::string& app_id(const ash::ShelfID& i) { return i.app_id; }
static const std::string& launch_id(const ash::ShelfID& i) {
return i.launch_id;
}
static bool Read(ash::mojom::ShelfIDDataView data, ash::ShelfID* out);
};
template <>
struct ASH_PUBLIC_EXPORT
StructTraits<ash::mojom::ShelfItemDataView, ShelfItem> {
static ash::ShelfItemType type(const ShelfItem& i) { return i.type; }
static const gfx::ImageSkia& image(const ShelfItem& i) { return i.image; }
static ash::ShelfItemStatus status(const ShelfItem& i) { return i.status; }
static const ash::ShelfID& shelf_id(const ShelfItem& i) { return i.id; }
static const base::string16& title(const ShelfItem& i) { return i.title; }
static bool shows_tooltip(const ShelfItem& i) { return i.shows_tooltip; }
static bool pinned_by_policy(const ShelfItem& i) {
return i.pinned_by_policy;
}
static bool Read(ash::mojom::ShelfItemDataView data, ShelfItem* out);
};
} // namespace mojo
#endif // ASH_PUBLIC_CPP_SHELF_STRUCT_MOJOM_TRAITS_H_