terminal_extension_helper.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved.
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Use of this source code is governed by a BSD-style license that can be
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// found in the LICENSE file.
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "chrome/browser/extensions/api/terminal/terminal_extension_helper.h"
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "chrome/browser/extensions/extension_service.h"
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "chrome/browser/profiles/profile.h"
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "chrome/common/extensions/extension_constants.h"
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "extensions/common/extension.h"
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgnamespace {
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst char kCroshExtensionEntryPoint[] = "/html/crosh.html";
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst extensions::Extension* GetTerminalExtension(Profile* profile) {
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  // Search order for terminal extensions.
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  // We prefer hterm-dev, then hterm, then the builtin crosh extension.
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  static const char* kPossibleAppIds[] = {
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    extension_misc::kHTermDevAppId,
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    extension_misc::kHTermAppId,
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    extension_misc::kCroshBuiltinAppId,
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  };
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  // The hterm-dev should be first in the list.
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  DCHECK_EQ(kPossibleAppIds[0], extension_misc::kHTermDevAppId);
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  ExtensionService* service = profile->GetExtensionService();
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  for (size_t x = 0; x < arraysize(kPossibleAppIds); ++x) {
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const extensions::Extension* extension = service->GetExtensionById(
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        kPossibleAppIds[x], false);
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (extension)
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      return extension;
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  }
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  return NULL;
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}  // namespace
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgnamespace extensions {
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgGURL TerminalExtensionHelper::GetCroshExtensionURL(Profile* profile) {
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  const extensions::Extension* extension = GetTerminalExtension(profile);
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  if (!extension)
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return GURL();
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  return extension->GetResourceURL(kCroshExtensionEntryPoint);
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}  // namespace extensions
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org