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

Side by Side Diff: components/omnibox/browser/contextual_suggestions_service.h

Issue 2965173002: Add ContextualSuggestionsService to Omnibox (Closed)
Patch Set: Move contextual suggestions service to c/o/b 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_OMNIBOX_BROWSER_CONTEXTUAL_SUGGESTIONS_SERVICE_H_
6 #define COMPONENTS_OMNIBOX_BROWSER_CONTEXTUAL_SUGGESTIONS_SERVICE_H_
7
8 #include <memory>
9 #include <string>
10
11 #include "base/feature_list.h"
Mark P 2017/07/18 19:11:28 nit: necessary?
Toyama 2017/07/18 20:28:47 Done. (removed)
12 #include "components/keyed_service/core/keyed_service.h"
13 #include "components/search_engines/template_url_service.h"
Mark P 2017/07/18 19:11:28 nit: just forward declare; no need to include
Toyama 2017/07/18 20:28:47 Done.
14 #include "components/signin/core/browser/access_token_fetcher.h"
15 #include "net/url_request/url_fetcher_delegate.h"
16 #include "net/url_request/url_request_context_getter.h"
Mark P 2017/07/18 19:11:29 nit: just forward declare; no need to include
Toyama 2017/07/18 20:28:47 Moved to .cc file. There are no symbols needed in
17 #include "url/gurl.h"
18
19 class OAuth2TokenService;
20 class SigninManagerBase;
21
22 namespace contextual_suggestions {
Mark P 2017/07/18 19:11:29 No need for namespace, as everything is already en
Toyama 2017/07/18 20:28:47 Done.
23
24 class ContextualSuggestionsService : public KeyedService {
Mark P 2017/07/18 19:11:29 nit: Please comment the purpose of this class.
Toyama 2017/07/18 20:28:47 Done.
25 public:
26 ContextualSuggestionsService(SigninManagerBase* signin_manager,
Mark P 2017/07/18 19:11:28 Please comment whether any of these are allowed to
Toyama 2017/07/18 20:28:47 Done.
27 OAuth2TokenService* token_service,
28 TemplateURLService* template_url_service,
29 net::URLRequestContextGetter* request_context);
30
31 ~ContextualSuggestionsService() override;
32
33 using ContextualSuggestionsCallback =
34 base::OnceCallback<void(std::unique_ptr<net::URLFetcher> fetcher)>;
35
36 // Creates a fetch request for contextual suggestions for |visited_url|, with
37 // |fetcher_delegate| as the URLFetcherDelegate that will process the response
38 // of the fetcher.
Mark P 2017/07/18 19:11:29 Please add/revise here to make it clearer what rel
Toyama 2017/07/18 20:28:47 I read the code and I am myself a little bit confu
39 //
40 // * If the URL to send the request to, which is constructed using field trial
41 // parameters, is invalid, |callback| is executed synchronously witha
42 // nullptr for |fetcher|.
43 // * If the service is not using experimental suggestions, |callback| is
44 // executed synchronously with a valid |fetcher| as a parameter.
45 // * If the service is supposed to use experimental suggestions and it is
46 // waiting for an authentication token, |callback| is executed synchronously
47 // with a nullptr for |fetcher|. * If the service is supposed to use
48 // experimental suggestions and it is not waiting for an authentication token,
49 // a request for an auth token is made asynchronously. After the token is
50 // obtained and attached to the |fetcher|, |callback| is called with a valid
51 // |fetcher| as a parameter.
52 void CreateContextualSuggestionsRequest(
53 const std::string& visited_url,
Mark P 2017/07/18 19:11:28 nit: visited_url -> current_url or simply url Appa
Toyama 2017/07/18 20:28:48 I s/visited_url/current_url/ everything in this co
54 net::URLFetcherDelegate* fetcher_delegate,
55 ContextualSuggestionsCallback callback);
56
57 private:
58 // Returns true if the folowing conditions are valid:
59 // * The |visited_url| is non-empty.
Mark P 2017/07/18 19:11:28 non-empty? Probably this should be checking wheth
Toyama 2017/07/18 20:28:48 The code is currently only checking it's not empty
Mark P 2017/07/18 23:45:50 Usually we pass around GURL variables and use gurl
60 // * The |default_provider| is Google.
61 // * The user is in the ZeroSuggestRedirectToChrome field trial.
62 // * The field trial provides a valid server address where the suggest request
63 // is redirected.
64 // * The suggest request is over HTTPS. This avoids leaking the current page
65 // URL or personal data in unencrypted network traffic.
66 // Note: these checks are in addition to CanSendUrl() on the default
67 // contextual suggestion URL.
68 bool UseExperimentalZeroSuggestSuggestions(
69 const std::string& visited_url) const;
70
71 // Returns a string representing the address of the server where the zero
Mark P 2017/07/18 19:11:29 Doesn't return a string...
Toyama 2017/07/18 20:28:47 Done. s/string/URL/
72 // suggest requests are being redirected when serving experimental
73 // suggestions.
74 static GURL ExperimentalZeroSuggestURL(const std::string& visited_url);
Mark P 2017/07/18 19:11:29 nit: I'd prefer current_url rather than visited_ur
Toyama 2017/07/18 20:28:47 Done.
75
76 // Returns a string representing the address of the server where the zero
77 // suggest request is being sent.
Mark P 2017/07/18 19:11:29 This comment makes it unclear how this relates to
Toyama 2017/07/18 20:28:48 I s/experimental/is_experimental/ to make the para
Mark P 2017/07/18 23:45:50 I don't feel strongly about memoizing as long as t
78 GURL ZeroSuggestURL(const std::string& visited_url, bool experimental) const;
79
80 // Creates an HTTP Get request for contextual suggestions. The return value
81 // does not include a header corresponding to an authorization token.
Mark P 2017/07/18 19:11:28 nit: The return value does not include a header c
Toyama 2017/07/18 20:28:48 Done.
82 std::unique_ptr<net::URLFetcher> CreateRequest(
83 const std::string& visited_url,
84 bool experimental,
85 net::URLFetcherDelegate* fetcher_delegate) const;
86
87 // Called when an access token request completes (successfully or not).
88 void AccessTokenAvailable(std::unique_ptr<net::URLFetcher> fetcher,
89 ContextualSuggestionsCallback callback,
90 const GoogleServiceAuthError& error,
91 const std::string& access_token);
92
93 net::URLRequestContextGetter* request_context_;
94 SigninManagerBase* signin_manager_;
95 TemplateURLService* template_url_service_;
96 OAuth2TokenService* token_service_;
97
98 // Helper for fetching OAuth2 access tokens. This is non-null iff an access
Mark P 2017/07/18 19:11:28 Does iff mean if and only if If so, simply say "w
Toyama 2017/07/18 20:28:48 iff == if and only if I think "iff" is stronger t
99 // token request is currently in progress.
Mark P 2017/07/18 19:11:29 Roughly when does that happen? There probably sho
Toyama 2017/07/18 20:28:47 I added the comment to CreateContextualSuggestions
100 std::unique_ptr<AccessTokenFetcher> token_fetcher_;
101 };
Mark P 2017/07/18 19:11:29 nit: missing DISALLOW_COPY_AND_ASSIGN. Is that in
Toyama 2017/07/18 20:28:47 I can't speak for Gheorghe, but I think it was not
102
103 } // namespace contextual_suggestions
104
105 #endif // COMPONENTS_OMNIBOX_BROWSER_CONTEXTUAL_SUGGESTIONS_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698