| Index: chrome/browser/extensions/api/terminal/terminal_extension_helper.cc
|
| diff --git a/chrome/browser/extensions/api/terminal/terminal_extension_helper.cc b/chrome/browser/extensions/api/terminal/terminal_extension_helper.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0c47819ce1d802fbea9c63ea5956117ca8906ada
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/api/terminal/terminal_extension_helper.cc
|
| @@ -0,0 +1,61 @@
|
| +// 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 "chrome/browser/extensions/api/terminal/terminal_extension_helper.h"
|
| +
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +
|
| +namespace {
|
| +
|
| +const char* kAllowedExtensionIds[] = {
|
| + // Keep official app first, so GetTerminalExtensionID checks it first.
|
| + "pnhechapfaindjhompbnflcldabbghjo", // HTerm App
|
| + "okddffdblfhhnmhodogpojmfkjmhinfp", // test SSH/Crosh Client
|
| +};
|
| +
|
| +const char kExtensionSchema[] = "chrome-extension://";
|
| +const char kCroshExtensionEntryPoint[] = "/html/crosh.html";
|
| +
|
| +} // namespace
|
| +
|
| +// Allow component and whitelisted extensions.
|
| +bool TerminalExtensionHelper::AllowAccessToExtension(
|
| + Profile* profile,
|
| + const std::string& extension_id) {
|
| + ExtensionService* service = profile->GetExtensionService();
|
| + const Extension* extension = service->GetExtensionById(extension_id, false);
|
| +
|
| + if (!extension)
|
| + return false;
|
| +
|
| + if (extension->location() == Extension::COMPONENT)
|
| + return true;
|
| +
|
| + for (size_t i = 0; i < arraysize(kAllowedExtensionIds); i++) {
|
| + if (extension->id() == kAllowedExtensionIds[i])
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +GURL TerminalExtensionHelper::GetCroshExtensionURL(Profile* profile) {
|
| + const char* extension_id = GetTerminalExtensionId(profile);
|
| + if (!extension_id)
|
| + return GURL();
|
| +
|
| + std::string crosh_url_str(kExtensionSchema);
|
| + crosh_url_str.append(extension_id);
|
| + crosh_url_str.append(kCroshExtensionEntryPoint);
|
| + return GURL(crosh_url_str);
|
| +}
|
| +
|
| +const char* TerminalExtensionHelper::GetTerminalExtensionId(Profile* profile) {
|
| + ExtensionService* service = profile->GetExtensionService();
|
| + for (size_t i = 0; i < arraysize(kAllowedExtensionIds); i++) {
|
| + if (service->GetExtensionById(kAllowedExtensionIds[i], false) != 0)
|
| + return kAllowedExtensionIds[i];
|
| + }
|
| + return NULL;
|
| +}
|
|
|