Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(698)

Unified Diff: chrome/browser/intents/cws_intents_registry.cc

Issue 12225076: Delete most web intents code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/intents/cws_intents_registry.cc
diff --git a/chrome/browser/intents/cws_intents_registry.cc b/chrome/browser/intents/cws_intents_registry.cc
deleted file mode 100644
index 42114995576bbd21282bd195088cd2804e5cdf76..0000000000000000000000000000000000000000
--- a/chrome/browser/intents/cws_intents_registry.cc
+++ /dev/null
@@ -1,235 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/intents/cws_intents_registry.h"
-
-#include "base/callback.h"
-#include "base/json/json_string_value_serializer.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/stl_util.h"
-#include "base/string16.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/common/extensions/extension_l10n_util.h"
-#include "chrome/common/extensions/message_bundle.h"
-#include "chrome/browser/net/chrome_url_request_context.h"
-#include "chrome/browser/webdata/web_data_service.h"
-#include "google_apis/google_api_keys.h"
-#include "net/base/load_flags.h"
-#include "net/base/mime_util.h"
-#include "net/base/url_util.h"
-#include "net/url_request/url_fetcher.h"
-
-namespace {
-
-// Limit for the number of suggestions we fix from CWS. Ideally, the registry
-// simply get all of them, but there is a) chunking on the CWS side, and b)
-// there is a cost with suggestions fetched. (Network overhead for favicons,
-// roundtrips to registry to check if installed).
-//
-// Since the picker limits the number of suggestions displayed to 5, 15 means
-// the suggestion list only has the potential to be shorter than that once the
-// user has at least 10 installed handlers for the particular action/type.
-//
-// TODO(groby): Adopt number of suggestions dynamically so the picker can
-// always display 5 suggestions unless there are less than 5 viable extensions
-// in the CWS.
-const char kMaxSuggestions[] = "15";
-
-// URL for CWS intents API.
-const char kCWSIntentServiceURL[] =
- "https://www.googleapis.com/chromewebstore/v1.1b/items/intent";
-
-// Determines if a string is a candidate for localization.
-bool ShouldLocalize(const std::string& value) {
- std::string::size_type index = 0;
- index = value.find(extensions::MessageBundle::kMessageBegin);
- if (index == std::string::npos)
- return false;
-
- index = value.find(extensions::MessageBundle::kMessageEnd, index);
- return (index != std::string::npos);
-}
-
-// Parses a JSON |response| from the CWS into a list of suggested extensions,
-// stored in |intents|. |intents| must not be NULL.
-void ParseResponse(const std::string& response,
- CWSIntentsRegistry::IntentExtensionList* intents) {
- std::string error;
- scoped_ptr<Value> parsed_response;
- JSONStringValueSerializer serializer(response);
- parsed_response.reset(serializer.Deserialize(NULL, &error));
- if (parsed_response.get() == NULL)
- return;
-
- DictionaryValue* response_dict = NULL;
- if (!parsed_response->GetAsDictionary(&response_dict) || !response_dict)
- return;
-
- ListValue* items;
- if (!response_dict->GetList("items", &items))
- return;
-
- for (ListValue::const_iterator iter(items->begin());
- iter != items->end(); ++iter) {
- DictionaryValue* item = static_cast<DictionaryValue*>(*iter);
-
- // All fields are mandatory - skip this result if any field isn't found.
- CWSIntentsRegistry::IntentExtensionInfo info;
- if (!item->GetString("id", &info.id))
- continue;
-
- if (!item->GetInteger("num_ratings", &info.num_ratings))
- continue;
-
- if (!item->GetDouble("average_rating", &info.average_rating))
- continue;
-
- if (!item->GetString("manifest", &info.manifest))
- continue;
-
- std::string manifest_utf8 = UTF16ToUTF8(info.manifest);
- JSONStringValueSerializer manifest_serializer(manifest_utf8);
- scoped_ptr<Value> manifest_value;
- manifest_value.reset(manifest_serializer.Deserialize(NULL, &error));
- if (manifest_value.get() == NULL)
- continue;
-
- DictionaryValue* manifest_dict;
- if (!manifest_value->GetAsDictionary(&manifest_dict) ||
- !manifest_dict->GetString("name", &info.name))
- continue;
-
- string16 url_string;
- if (!item->GetString("icon_url", &url_string))
- continue;
- info.icon_url = GURL(url_string);
-
- // Need to parse CWS reply, since it is not pre-l10n'd.
- ListValue* all_locales = NULL;
- if (ShouldLocalize(UTF16ToUTF8(info.name)) &&
- item->GetList("locale_data", &all_locales)) {
- std::map<std::string, std::string> localized_title;
-
- for (ListValue::const_iterator locale_iter(all_locales->begin());
- locale_iter != all_locales->end(); ++locale_iter) {
- DictionaryValue* locale = static_cast<DictionaryValue*>(*locale_iter);
-
- std::string locale_id, title;
- if (!locale->GetString("locale_string", &locale_id) ||
- !locale->GetString("title", &title))
- continue;
-
- localized_title[locale_id] = title;
- }
-
- std::vector<std::string> valid_locales;
- extension_l10n_util::GetAllFallbackLocales(
- extension_l10n_util::CurrentLocaleOrDefault(),
- "all",
- &valid_locales);
- for (std::vector<std::string>::iterator iter = valid_locales.begin();
- iter != valid_locales.end(); ++iter) {
- if (localized_title.count(*iter)) {
- info.name = UTF8ToUTF16(localized_title[*iter]);
- break;
- }
- }
- }
-
- intents->push_back(info);
- }
-}
-
-} // namespace
-
-// Internal object representing all data associated with a single query.
-struct CWSIntentsRegistry::IntentsQuery {
- IntentsQuery();
- ~IntentsQuery();
-
- // Underlying URL request query.
- scoped_ptr<net::URLFetcher> url_fetcher;
-
- // The callback - invoked on completed retrieval.
- ResultsCallback callback;
-};
-
-CWSIntentsRegistry::IntentsQuery::IntentsQuery() {
-}
-
-CWSIntentsRegistry::IntentsQuery::~IntentsQuery() {
-}
-
-CWSIntentsRegistry::IntentExtensionInfo::IntentExtensionInfo()
- : num_ratings(0),
- average_rating(0) {
-}
-
-CWSIntentsRegistry::IntentExtensionInfo::~IntentExtensionInfo() {
-}
-
-CWSIntentsRegistry::CWSIntentsRegistry(net::URLRequestContextGetter* context)
- : request_context_(context) {
-}
-
-CWSIntentsRegistry::~CWSIntentsRegistry() {
- // Cancel all pending queries, since we can't handle them any more.
- STLDeleteValues(&queries_);
-}
-
-void CWSIntentsRegistry::OnURLFetchComplete(const net::URLFetcher* source) {
- DCHECK(source);
-
- URLFetcherHandle handle = reinterpret_cast<URLFetcherHandle>(source);
- QueryMap::iterator it = queries_.find(handle);
- DCHECK(it != queries_.end());
- scoped_ptr<IntentsQuery> query(it->second);
- DCHECK(query.get() != NULL);
- queries_.erase(it);
-
- std::string response;
- source->GetResponseAsString(&response);
-
- // TODO(groby): Do we really only accept 200, or any 2xx codes?
- IntentExtensionList intents;
- if (source->GetResponseCode() == 200)
- ParseResponse(response, &intents);
-
- if (!query->callback.is_null())
- query->callback.Run(intents);
-}
-
-void CWSIntentsRegistry::GetIntentServices(const string16& action,
- const string16& mimetype,
- const ResultsCallback& cb) {
- scoped_ptr<IntentsQuery> query(new IntentsQuery);
- query->callback = cb;
- query->url_fetcher.reset(net::URLFetcher::Create(
- 0, BuildQueryURL(action,mimetype), net::URLFetcher::GET, this));
-
- if (query->url_fetcher.get() == NULL)
- return;
-
- query->url_fetcher->SetRequestContext(request_context_);
- query->url_fetcher->SetLoadFlags(
- net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES);
-
- URLFetcherHandle handle = reinterpret_cast<URLFetcherHandle>(
- query->url_fetcher.get());
- queries_[handle] = query.release();
- queries_[handle]->url_fetcher->Start();
-}
-
-// static
-GURL CWSIntentsRegistry::BuildQueryURL(const string16& action,
- const string16& type) {
- GURL request(kCWSIntentServiceURL);
- request = net::AppendQueryParameter(request, "intent", UTF16ToUTF8(action));
- request = net::AppendQueryParameter(request, "mime_types", UTF16ToUTF8(type));
- request = net::AppendQueryParameter(request, "start_index", "0");
- request = net::AppendQueryParameter(request, "num_results", kMaxSuggestions);
- request = net::AppendQueryParameter(request, "key", google_apis::GetAPIKey());
-
- return request;
-}
« no previous file with comments | « chrome/browser/intents/cws_intents_registry.h ('k') | chrome/browser/intents/cws_intents_registry_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698