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