diff options
-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(); + } + }); } ]); |