Skip to content

Commit

Permalink
Honor @Version field when converting greasemonkey scripts to
Browse files Browse the repository at this point in the history
extensions.

BUG=30760

Review URL: http://codereview.chromium.org/2829011

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50430 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
aa@chromium.org committed Jun 22, 2010
1 parent d2d3647 commit abae38b
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 2 deletions.
8 changes: 7 additions & 1 deletion chrome/browser/extensions/convert_user_script.cc
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,14 @@ Extension* ConvertUserScriptToExtension(const FilePath& user_script_path,
else
root->SetString(keys::kName, original_url.ExtractFileName());

// Not all scripts have a version, but we need one. Default to 1.0 if it is
// missing.
if (!script.version().empty())
root->SetString(keys::kVersion, script.version());
else
root->SetString(keys::kVersion, "1.0");

root->SetString(keys::kDescription, script.description());
root->SetString(keys::kVersion, "1.0");
root->SetString(keys::kPublicKey, key);
root->SetBoolean(keys::kConvertedFromUserScript, true);

Expand Down
2 changes: 1 addition & 1 deletion chrome/browser/extensions/convert_user_script_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ TEST(ExtensionFromUserScript, Basic) {

// Validate generated extension metadata.
EXPECT_EQ("My user script", extension->name());
EXPECT_EQ("1.0", extension->VersionString());
EXPECT_EQ("2.2.2", extension->VersionString());
EXPECT_EQ("Does totally awesome stuff.", extension->description());
EXPECT_EQ("IhCFCg9PMQTAcJdc9ytUP99WME+4yh6aMnM1uupkovo=",
extension->public_key());
Expand Down
6 changes: 6 additions & 0 deletions chrome/browser/extensions/user_script_master.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "base/stl_util-inl.h"
#include "base/string_util.h"
#include "base/thread.h"
#include "base/version.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/profile.h"
Expand Down Expand Up @@ -60,6 +61,7 @@ bool UserScriptMaster::ScriptReloader::ParseMetadataHeader(
static const base::StringPiece kUserScriptEng("// ==/UserScript==");
static const base::StringPiece kNamespaceDeclaration("// @namespace");
static const base::StringPiece kNameDeclaration("// @name");
static const base::StringPiece kVersionDeclaration("// @version");
static const base::StringPiece kDescriptionDeclaration("// @description");
static const base::StringPiece kIncludeDeclaration("// @include");
static const base::StringPiece kExcludeDeclaration("// @exclude");
Expand Down Expand Up @@ -98,6 +100,10 @@ bool UserScriptMaster::ScriptReloader::ParseMetadataHeader(
script->set_name_space(value);
} else if (GetDeclarationValue(line, kNameDeclaration, &value)) {
script->set_name(value);
} else if (GetDeclarationValue(line, kVersionDeclaration, &value)) {
scoped_ptr<Version> version(Version::GetVersionFromString(value));
if (version.get())
script->set_version(version->GetString());
} else if (GetDeclarationValue(line, kDescriptionDeclaration, &value)) {
script->set_description(value);
} else if (GetDeclarationValue(line, kMatchDeclaration, &value)) {
Expand Down
9 changes: 9 additions & 0 deletions chrome/common/extensions/user_script.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@ class UserScript {
const std::string& name() const { return name_; }
void set_name(const std::string& name) { name_ = name; }

const std::string& version() const { return version_; }
void set_version(const std::string& version) {
version_ = version;
}

const std::string& description() const { return description_; }
void set_description(const std::string& description) {
description_ = description;
Expand Down Expand Up @@ -194,6 +199,10 @@ class UserScript {
// A longer description. Only used when parsing Greasemonkey-style scripts.
std::string description_;

// A version number of the script. Only used when parsing Greasemonkey-style
// scripts.
std::string version_;

// Greasemonkey-style globs that determine pages to inject the script into.
// These are only used with standalone scripts.
std::vector<std::string> globs_;
Expand Down
1 change: 1 addition & 0 deletions chrome/test/data/extensions/user_script_basic.user.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// ==UserScript==
// @name My user script
// @version 2.2.2
// @namespace http://www.google.com
// @description Does totally awesome stuff.
// @include http://www.google.com/*
Expand Down

0 comments on commit abae38b

Please sign in to comment.