summaryrefslogtreecommitdiffstats
path: root/components/copresence
diff options
context:
space:
mode:
authorckehoe <ckehoe@chromium.org>2015-02-09 14:37:46 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-09 22:38:09 +0000
commit13c2644be4b4c19f8f176c2b304e53f7b1817442 (patch)
tree0be5c90f2c61e95f49998944e058bb47c73d6812 /components/copresence
parenteaf9258c49f76a997f690a63cb7e3091a09990b0 (diff)
downloadchromium_src-13c2644be4b4c19f8f176c2b304e53f7b1817442.zip
chromium_src-13c2644be4b4c19f8f176c2b304e53f7b1817442.tar.gz
chromium_src-13c2644be4b4c19f8f176c2b304e53f7b1817442.tar.bz2
The project ID isn't needed, since it's actually ok to expose the API key. We should offer the option of putting it in the manifest though.
BUG=454887 Review URL: https://codereview.chromium.org/901213003 Cr-Commit-Position: refs/heads/master@{#315413}
Diffstat (limited to 'components/copresence')
-rw-r--r--components/copresence/proto/data.proto1
-rw-r--r--components/copresence/public/copresence_delegate.h3
-rw-r--r--components/copresence/rpc/rpc_handler.cc33
-rw-r--r--components/copresence/rpc/rpc_handler.h4
-rw-r--r--components/copresence/rpc/rpc_handler_unittest.cc6
5 files changed, 17 insertions, 30 deletions
diff --git a/components/copresence/proto/data.proto b/components/copresence/proto/data.proto
index c3679bc..f862e9b 100644
--- a/components/copresence/proto/data.proto
+++ b/components/copresence/proto/data.proto
@@ -9,7 +9,6 @@ message ClientVersion {
optional string version_name = 2;
optional int64 version_code = 3;
optional string certificate_fingerprint = 4;
- optional string project_id = 5;
}
message Status {
optional StatusCode code = 1;
diff --git a/components/copresence/public/copresence_delegate.h b/components/copresence/public/copresence_delegate.h
index b909742..3f54b30 100644
--- a/components/copresence/public/copresence_delegate.h
+++ b/components/copresence/public/copresence_delegate.h
@@ -47,11 +47,8 @@ class CopresenceDelegate {
virtual const std::string GetPlatformVersionString() const = 0;
- // This is deprecated. Clients should pass in the project ID instead.
virtual const std::string GetAPIKey(const std::string& app_id) const = 0;
- virtual const std::string GetProjectId(const std::string& app_id) const = 0;
-
// Thw WhispernetClient must outlive the CopresenceManager.
virtual WhispernetClient* GetWhispernetClient() = 0;
diff --git a/components/copresence/rpc/rpc_handler.cc b/components/copresence/rpc/rpc_handler.cc
index 39a3797..372b680 100644
--- a/components/copresence/rpc/rpc_handler.cc
+++ b/components/copresence/rpc/rpc_handler.cc
@@ -139,18 +139,10 @@ scoped_ptr<DeviceState> GetDeviceCapabilities(const ReportRequest& request) {
// an int64 version. We should probably change the version proto
// to handle a more detailed version.
ClientVersion* CreateVersion(const std::string& client,
- const std::string& version_name,
- const std::string& project_id) {
+ const std::string& version_name) {
ClientVersion* version = new ClientVersion;
-
version->set_client(client);
version->set_version_name(version_name);
-
- if (!project_id.empty()) {
- DVLOG(3) << "Using project ID " << project_id;
- version->set_project_id(project_id);
- }
-
return version;
}
@@ -213,6 +205,15 @@ void RpcHandler::SendReportRequest(scoped_ptr<ReportRequest> request,
const StatusCallback& status_callback) {
DCHECK(request.get());
+ // Check that the app, if any, has some kind of authentication token.
+ // Don't allow it to piggyback on Chrome's credentials.
+ if (!app_id.empty() && delegate_->GetAPIKey(app_id).empty() &&
+ auth_token.empty()) {
+ LOG(ERROR) << "App " << app_id << " has no API key or auth token";
+ status_callback.Run(FAIL);
+ return;
+ }
+
// Store just one auth token since we should have only one account
// per instance of the copresence component.
// TODO(ckehoe): We may eventually need to support multiple auth tokens.
@@ -572,13 +573,9 @@ RequestHeader* RpcHandler::CreateRequestHeader(
RequestHeader* header = new RequestHeader;
header->set_allocated_framework_version(CreateVersion(
- "Chrome", delegate_->GetPlatformVersionString(), std::string()));
- if (!app_id.empty()) {
- LOG_IF(WARNING, delegate_->GetProjectId(app_id).empty())
- << "No copresence project ID available";
- header->set_allocated_client_version(CreateVersion(
- app_id, std::string(), delegate_->GetProjectId(app_id)));
- }
+ "Chrome", delegate_->GetPlatformVersionString()));
+ if (!app_id.empty())
+ header->set_allocated_client_version(CreateVersion(app_id, std::string()));
header->set_current_time_millis(base::Time::Now().ToJsTime());
if (!device_id.empty())
header->set_registered_device_id(device_id);
@@ -604,7 +601,7 @@ void RpcHandler::SendServerRequest(
DCHECK(!auth_token_.empty());
server_post_callback_.Run(delegate_->GetRequestContext(),
rpc_name,
- delegate_->GetAPIKey(app_id), // Deprecated
+ delegate_->GetAPIKey(app_id),
authenticated ? auth_token_ : std::string(),
make_scoped_ptr<MessageLite>(request.release()),
response_handler);
@@ -612,7 +609,7 @@ void RpcHandler::SendServerRequest(
void RpcHandler::SendHttpPost(net::URLRequestContextGetter* url_context_getter,
const std::string& rpc_name,
- const std::string& api_key, // Deprecated
+ const std::string& api_key,
const std::string& auth_token,
scoped_ptr<MessageLite> request_proto,
const PostCleanupCallback& callback) {
diff --git a/components/copresence/rpc/rpc_handler.h b/components/copresence/rpc/rpc_handler.h
index 9ead5e16..6277145 100644
--- a/components/copresence/rpc/rpc_handler.h
+++ b/components/copresence/rpc/rpc_handler.h
@@ -49,7 +49,7 @@ class RpcHandler {
// Arguments:
// URLRequestContextGetter: Context for the HTTP POST request.
// string: Name of the rpc to invoke. URL format: server.google.com/rpc_name
- // string: The API key to pass in the request. Deprecated.
+ // string: The API key to pass in the request.
// string: The auth token to pass with the request.
// MessageLite: Contents of POST request to be sent. This needs to be
// a (scoped) pointer to ease handling of the abstract MessageLite class.
@@ -157,7 +157,7 @@ class RpcHandler {
// to contact the server, but it can be overridden for testing.
void SendHttpPost(net::URLRequestContextGetter* url_context_getter,
const std::string& rpc_name,
- const std::string& api_key, // Deprecated
+ const std::string& api_key,
const std::string& auth_token,
scoped_ptr<google::protobuf::MessageLite> request_proto,
const PostCleanupCallback& callback);
diff --git a/components/copresence/rpc/rpc_handler_unittest.cc b/components/copresence/rpc/rpc_handler_unittest.cc
index b10c1fa..e0337ce 100644
--- a/components/copresence/rpc/rpc_handler_unittest.cc
+++ b/components/copresence/rpc/rpc_handler_unittest.cc
@@ -81,10 +81,6 @@ class RpcHandlerTest : public testing::Test, public CopresenceDelegate {
return app_id + " API Key";
}
- const std::string GetProjectId(const std::string& app_id) const override {
- return app_id + " Project ID";
- }
-
WhispernetClient* GetWhispernetClient() override {
return whispernet_client_.get();
}
@@ -290,8 +286,6 @@ TEST_F(RpcHandlerTest, CreateRequestHeader) {
report->header().framework_version().version_name());
EXPECT_EQ("CreateRequestHeader App",
report->header().client_version().client());
- EXPECT_EQ("CreateRequestHeader App Project ID",
- report->header().client_version().project_id());
EXPECT_EQ("CreateRequestHeader Device ID",
report->header().registered_device_id());
EXPECT_EQ(CHROME_PLATFORM_TYPE,