1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/common/extensions/manifest_handlers/minimum_chrome_version_checker.h" 6 7#include "base/strings/utf_string_conversions.h" 8#include "base/version.h" 9#include "chrome/common/chrome_version_info.h" 10#include "chrome/grit/chromium_strings.h" 11#include "extensions/common/error_utils.h" 12#include "extensions/common/extension.h" 13#include "extensions/common/manifest_constants.h" 14#include "ui/base/l10n/l10n_util.h" 15 16namespace extensions { 17 18namespace keys = manifest_keys; 19namespace errors = manifest_errors; 20 21MinimumChromeVersionChecker::MinimumChromeVersionChecker() { 22} 23 24MinimumChromeVersionChecker::~MinimumChromeVersionChecker() { 25} 26 27bool MinimumChromeVersionChecker::Parse(Extension* extension, 28 base::string16* error) { 29 std::string minimum_version_string; 30 if (!extension->manifest()->GetString(keys::kMinimumChromeVersion, 31 &minimum_version_string)) { 32 *error = base::ASCIIToUTF16(errors::kInvalidMinimumChromeVersion); 33 return false; 34 } 35 36 Version minimum_version(minimum_version_string); 37 if (!minimum_version.IsValid()) { 38 *error = base::ASCIIToUTF16(errors::kInvalidMinimumChromeVersion); 39 return false; 40 } 41 42 chrome::VersionInfo current_version_info; 43 Version current_version(current_version_info.Version()); 44 if (!current_version.IsValid()) { 45 NOTREACHED(); 46 return false; 47 } 48 49 if (current_version.CompareTo(minimum_version) < 0) { 50 *error = ErrorUtils::FormatErrorMessageUTF16( 51 errors::kChromeVersionTooLow, 52 l10n_util::GetStringUTF8(IDS_PRODUCT_NAME), 53 minimum_version_string); 54 return false; 55 } 56 return true; 57} 58 59const std::vector<std::string> MinimumChromeVersionChecker::Keys() const { 60 return SingleKey(keys::kMinimumChromeVersion); 61} 62 63} // namespace extensions 64