diff options
author | rogerta@google.com <rogerta@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-08 15:55:16 +0000 |
---|---|---|
committer | rogerta@google.com <rogerta@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-08 15:55:16 +0000 |
commit | 1d33712b9d0ef178d05378bd5877b0f6241b5f6e (patch) | |
tree | b5757128b313035060ffdf170f27d49e39eb6ae2 | |
parent | ba00b49d134df5d468ddd62d21ab33d7401b59fa (diff) | |
download | chromium_src-1d33712b9d0ef178d05378bd5877b0f6241b5f6e.zip chromium_src-1d33712b9d0ef178d05378bd5877b0f6241b5f6e.tar.gz chromium_src-1d33712b9d0ef178d05378bd5877b0f6241b5f6e.tar.bz2 |
Don't use the return value of rlz_lib::SendFinancialPing() as the return value
of the chrome extension API, since a false does not represent an error. Added
an optional callback to the API so that caller can determine if the ping was
sent or not.
BUG=54294
TEST=n/a
Review URL: http://codereview.chromium.org/3358012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58827 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_rlz_apitest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_rlz_module.cc | 16 | ||||
-rw-r--r-- | chrome/common/extensions/api/extension_api.json | 3 | ||||
-rw-r--r-- | chrome/test/data/extensions/api_test/rlz/test.js | 11 |
4 files changed, 25 insertions, 7 deletions
diff --git a/chrome/browser/extensions/extension_rlz_apitest.cc b/chrome/browser/extensions/extension_rlz_apitest.cc index c9c1416..7340647 100644 --- a/chrome/browser/extensions/extension_rlz_apitest.cc +++ b/chrome/browser/extensions/extension_rlz_apitest.cc @@ -66,7 +66,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Rlz) { // Now run all the tests. ASSERT_TRUE(RunExtensionTest("rlz")) << message_; - ASSERT_EQ(1, MockRlzSendFinancialPingFunction::expected_count()); + ASSERT_EQ(2, MockRlzSendFinancialPingFunction::expected_count()); ExtensionFunctionDispatcher::ResetFunctions(); // Now make sure we recorded what was expected. If the code in test.js diff --git a/chrome/browser/extensions/extension_rlz_module.cc b/chrome/browser/extensions/extension_rlz_module.cc index 25724be..e31fc69 100644 --- a/chrome/browser/extensions/extension_rlz_module.cc +++ b/chrome/browser/extensions/extension_rlz_module.cc @@ -144,10 +144,18 @@ bool RlzSendFinancialPingFunction::RunImpl() { bool exclude_machine_id; EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(6, &exclude_machine_id)); - return rlz_lib::SendFinancialPing(product, access_points.get(), - signature.c_str(), brand.c_str(), - id.c_str(), lang.c_str(), - exclude_machine_id); + // rlz_lib::SendFinancialPing() will not send a ping more often than once in + // any 24-hour period. Calling it more often has no effect. If a ping is + // not sent false is returned, but this is not an error, so we should not + // use the return value of rlz_lib::SendFinancialPing() as the return value + // of this function. Callers interested in the return value can register + // an optional callback function. + bool sent = rlz_lib::SendFinancialPing(product, access_points.get(), + signature.c_str(), brand.c_str(), + id.c_str(), lang.c_str(), + exclude_machine_id); + result_.reset(Value::CreateBooleanValue(sent)); + return true; } bool RlzClearProductStateFunction::RunImpl() { diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json index 0ca4808..1336ff0 100644 --- a/chrome/common/extensions/api/extension_api.json +++ b/chrome/common/extensions/api/extension_api.json @@ -3141,7 +3141,8 @@ {"name": "brand", "type": "string"}, {"name": "id", "type": "string"}, {"name": "lang", "type": "string"}, - {"name": "exclude_machine_id", "type": "boolean"} + {"name": "exclude_machine_id", "type": "boolean"}, + {"name": "callback", "type": "function", "optional": true, "parameters": [{"name": "sent", "type": "boolean"}]} ] }, { diff --git a/chrome/test/data/extensions/api_test/rlz/test.js b/chrome/test/data/extensions/api_test/rlz/test.js index 6fb4239..445f023 100644 --- a/chrome/test/data/extensions/api_test/rlz/test.js +++ b/chrome/test/data/extensions/api_test/rlz/test.js @@ -139,7 +139,16 @@ chrome.test.runTests([ chrome.experimental.rlz.sendFinancialPing('D', ['D3'], 'sig', 'TEST', 'id', 'en', false); - chrome.test.succeed(); + // try another call, this time the ping should not be sent. + chrome.experimental.rlz.sendFinancialPing('D', ['D3'], 'sig', 'TEST', + 'id', 'en', false, + function(sent) { + if (sent) { + chrome.test.fail(); + } else { + chrome.test.succeed(); + } + }); } ]); |