chromium/chromeos/crosapi/mojom/browser_app_instance_registry_mojom_traits.cc

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chromeos/crosapi/mojom/browser_app_instance_registry_mojom_traits.h"

namespace mojo {

bool StructTraits<crosapi::mojom::BrowserWindowInstanceUpdateDataView,
                  apps::BrowserWindowInstanceUpdate>::
    Read(crosapi::mojom::BrowserWindowInstanceUpdateDataView input,
         apps::BrowserWindowInstanceUpdate* output) {
  apps::BrowserWindowInstanceUpdate update;
  if (input.ReadId(&update.id) && input.ReadWindowId(&update.window_id)) {
    update.is_active = input.is_active();
    update.browser_session_id = input.browser_session_id();
    update.restored_browser_session_id = input.restored_browser_session_id();
    update.is_incognito = input.is_incognito();
    update.lacros_profile_id = input.lacros_profile_id();
    *output = std::move(update);
    return true;
  }
  return false;
}

bool StructTraits<crosapi::mojom::BrowserAppInstanceUpdateDataView,
                  apps::BrowserAppInstanceUpdate>::
    Read(crosapi::mojom::BrowserAppInstanceUpdateDataView input,
         apps::BrowserAppInstanceUpdate* output) {
  apps::BrowserAppInstanceUpdate update;
  if (input.ReadId(&update.id) && input.ReadType(&update.type) &&
      input.ReadAppId(&update.app_id) &&
      input.ReadWindowId(&update.window_id) && input.ReadTitle(&update.title)) {
    update.is_browser_active = input.is_browser_active();
    update.is_web_contents_active = input.is_web_contents_active();
    update.browser_session_id = input.browser_session_id();
    update.restored_browser_session_id = input.restored_browser_session_id();
    *output = std::move(update);
    return true;
  }
  return false;
}

crosapi::mojom::BrowserAppInstanceType
EnumTraits<crosapi::mojom::BrowserAppInstanceType,
           apps::BrowserAppInstanceUpdate::Type>::
    ToMojom(apps::BrowserAppInstanceUpdate::Type input) {
  switch (input) {
    case apps::BrowserAppInstanceUpdate::Type::kAppTab:
      return crosapi::mojom::BrowserAppInstanceType::kAppTab;
    case apps::BrowserAppInstanceUpdate::Type::kAppWindow:
      return crosapi::mojom::BrowserAppInstanceType::kAppWindow;
  }
}

bool EnumTraits<crosapi::mojom::BrowserAppInstanceType,
                apps::BrowserAppInstanceUpdate::Type>::
    FromMojom(crosapi::mojom::BrowserAppInstanceType input,
              apps::BrowserAppInstanceUpdate::Type* output) {
  switch (input) {
    case crosapi::mojom::BrowserAppInstanceType::kAppTab:
      *output = apps::BrowserAppInstanceUpdate::Type::kAppTab;
      return true;
    case crosapi::mojom::BrowserAppInstanceType::kAppWindow:
      *output = apps::BrowserAppInstanceUpdate::Type::kAppWindow;
      return true;
  }
}

}  // namespace mojo