// Copyright (c) 2012 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.

#include "view_type.h"

#include "base/strings/string_piece.h"

namespace user_scripts {

bool GetViewTypeFromString(const std::string& view_type,
                           ViewType* view_type_out) {
  // TODO(devlin): This map doesn't contain the following values:
  // - VIEW_TYPE_BACKGROUND_CONTENTS
  // - VIEW_TYPE_COMPONENT
  // - VIEW_TYPE_EXTENSION_GUEST
  // Why? Is it just because we don't expose those types to JS?
  static const struct {
    ViewType type;
    base::StringPiece name;
  } constexpr kTypeMap[] = {
      // {VIEW_TYPE_APP_WINDOW, "APP_WINDOW"},
      // {VIEW_TYPE_EXTENSION_BACKGROUND_PAGE, "BACKGROUND"},
      // {VIEW_TYPE_EXTENSION_DIALOG, "EXTENSION_DIALOG"},
      // {VIEW_TYPE_EXTENSION_POPUP, "POPUP"},
      {VIEW_TYPE_TAB_CONTENTS, "TAB"},
  };

  for (const auto& entry : kTypeMap) {
    if (entry.name == view_type) {
      *view_type_out = entry.type;
      return true;
    }
  }

  return false;
}

}  // namespace extensions
