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

Unified Diff: components/contextual_suggestions/contextual_suggestions_service.h

Issue 2965173002: Add ContextualSuggestionsService to Omnibox (Closed)
Patch Set: Initial component creation Created 3 years, 5 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: components/contextual_suggestions/contextual_suggestions_service.h
diff --git a/components/contextual_suggestions/contextual_suggestions_service.h b/components/contextual_suggestions/contextual_suggestions_service.h
new file mode 100644
index 0000000000000000000000000000000000000000..f3f9444e78caddf75e12d5bf004a771a983c80de
--- /dev/null
+++ b/components/contextual_suggestions/contextual_suggestions_service.h
@@ -0,0 +1,96 @@
+// Copyright 2017 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.
+
+#ifndef COMPONENTS_CONTEXTUAL_SUGGESTIONS_SERVICE_H_
+#define COMPONENTS_CONTEXTUAL_SUGGESTIONS_SERVICE_H_
Marc Treib 2017/07/06 08:32:20 There should be an extra CONTEXTUAL_SUGGESTIONS_ h
gcomanici 2017/07/06 15:34:18 Done.
+
Marc Treib 2017/07/06 08:32:21 nit: include <string>, <memory>
gcomanici 2017/07/06 15:34:18 Done.
+#include "base/feature_list.h"
+#include "base/strings/stringprintf.h"
Marc Treib 2017/07/06 08:32:20 Not needed I think?
gcomanici 2017/07/06 15:34:18 Removed.
+#include "components/keyed_service/core/keyed_service.h"
+#include "components/search_engines/template_url_service.h"
+#include "components/signin/core/browser/access_token_fetcher.h"
+#include "components/signin/core/browser/signin_manager_base.h"
+#include "google_apis/gaia/oauth2_token_service.h"
+#include "net/url_request/url_fetcher_delegate.h"
+#include "net/url_request/url_request_context_getter.h"
+#include "url/gurl.h"
+
+namespace contextual_suggestions {
+
+// Feature used for using an experimental zero suggest suggestions service
+// for omnibox. This feature redirects requests to a service maintained by
+// the Chrome team.
+extern const base::Feature kZeroSuggestRedirectToChrome;
Marc Treib 2017/07/06 08:32:21 It's common practice to put features into a separa
gcomanici 2017/07/06 15:34:18 Done.
+
+class ContextualSuggestionsService : public KeyedService {
+ public:
+ ContextualSuggestionsService(SigninManagerBase* signin_manager,
+ OAuth2TokenService* token_service,
+ TemplateURLService* template_url_service,
+ net::URLRequestContextGetter* request_context);
+
+ ~ContextualSuggestionsService() override;
+
+ // Returns true if the folowing conditions are valid:
+ // * The |default_provider| is Google.
+ // * The user is in the ZeroSuggestRedirectToChrome field trial.
+ // * The field trial provides a valid server address where the suggest request
+ // is redirected.
+ // * The suggest request is over HTTPS. This avoids leaking the current page
+ // URL
Marc Treib 2017/07/06 08:32:21 nit: weird line break
gcomanici 2017/07/06 15:34:18 Fixed.
+ // or personal data in unencrypted network traffic.
+ // Note: these checks are in addition to CanSendUrl() on the default
+ // contextual suggestion URL.
+ bool UseExperimentalZeroSuggestSuggestions() const;
+
+ using ContextualSuggestionsCallback =
+ base::OnceCallback<void(std::unique_ptr<net::URLFetcher> fetcher)>;
+ // Creates a fetch request for experimental contextual suggestions for
+ // |visited_url|, with |fetch_delegate| as the URLFetherDelegate that will
Marc Treib 2017/07/06 08:32:20 s/fetch_delegate/fetcher_delegate/ s/URLFetherDele
gcomanici 2017/07/06 15:34:18 Done.
+ // process the response.
+ //
+ // Upon successful creation, the function returns |true| and |callback| is
+ // executed with the result as a parameter.
Marc Treib 2017/07/06 08:32:21 Sync or async?
gcomanici 2017/07/06 15:34:18 sync. I changed the comments to make this clear.
Marc Treib 2017/07/06 16:02:45 No, I don't think that's correct. There are some e
gcomanici 2017/07/06 16:54:16 You are right. I made the comment a bit more expli
+ //
+ // The function returns |false| if the service is already waiting for a
+ // authenticaiton token.
+ //
+ // The function returns |false| if the service is suggest URL used to redirect
Marc Treib 2017/07/06 08:32:20 Remove "service is"? (I don't understand this sent
gcomanici 2017/07/06 15:34:18 I changed the statement to make it more clear.
+ // the request is invalid.
+ bool CreateContextualSuggestionsRequest(
+ const std::string& visited_url,
+ net::URLFetcherDelegate* fetcher_delegate,
+ ContextualSuggestionsCallback callback);
+
+ private:
+ // Returns a string representing the address of the server where the zero
+ // suggest requests are being redirected.
+ static GURL ExperimentalZeroSuggestURL(const std::string visited_url);
Marc Treib 2017/07/06 08:32:21 &
gcomanici 2017/07/06 15:34:18 Done.
+
+ // Creates an HTTTP Get request for experimental contextual suggestions. The
+ // return value does not include a header corresponding to an authorization
+ // token.
+ std::unique_ptr<net::URLFetcher> CreateRequest(
+ const std::string& visited_url,
+ net::URLFetcherDelegate* fetcher_delegate);
Marc Treib 2017/07/06 08:32:21 const?
gcomanici 2017/07/06 15:34:18 Added const.
+
+ // Called when an access token request completes (successfully or not).
+ void AccessTokenAvailable(std::unique_ptr<net::URLFetcher> fetcher,
+ ContextualSuggestionsCallback callback,
+ const GoogleServiceAuthError& error,
+ const std::string& access_token);
+
+ net::URLRequestContextGetter* request_context_;
+ SigninManagerBase* signin_manager_;
+ TemplateURLService* template_url_service_;
+ OAuth2TokenService* token_service_;
+
+ // Helper for fetching OAuth2 access tokens. This is non-null iff an access
+ // token request is currently in progress.
+ std::unique_ptr<AccessTokenFetcher> token_fetcher_;
+};
+
+} // namespace contextual_suggestions
+
+#endif // COMPONENTS_CONTEXTUAL_SUGGESTIONS_SERVICE_H_

Powered by Google App Engine
This is Rietveld 408576698