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

Side by Side Diff: chrome/browser/ui/google_now/google_now_service.h

Issue 11471046: Fetching Google Now Notifications data from the server (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Travis and rgustafson's comments Created 8 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_GOOGLE_NOW_GOOGLE_NOW_SERVICE_H_ 5 #ifndef CHROME_BROWSER_UI_GOOGLE_NOW_GOOGLE_NOW_SERVICE_H_
6 #define CHROME_BROWSER_UI_GOOGLE_NOW_GOOGLE_NOW_SERVICE_H_ 6 #define CHROME_BROWSER_UI_GOOGLE_NOW_GOOGLE_NOW_SERVICE_H_
7 7
8 #include "base/timer.h" 8 #include "base/timer.h"
9 #include "chrome/browser/profiles/profile_keyed_service.h" 9 #include "chrome/browser/profiles/profile_keyed_service.h"
10 #include "net/url_request/url_fetcher_delegate.h"
10 11
11 class Profile; 12 class Profile;
12 13
13 namespace base { 14 namespace base {
14 class TimeDelta; 15 class TimeDelta;
15 } 16 }
16 17
17 namespace content { 18 namespace content {
18 struct Geoposition; 19 struct Geoposition;
19 } 20 }
20 21
21 namespace net {
22 class URLRequest;
23 }
24
25 // The Google Now service gets Google Now cards from the server and shows them 22 // The Google Now service gets Google Now cards from the server and shows them
26 // as Chrome notifications. 23 // as Chrome notifications.
27 // The service performs periodic updating of Google Now cards. 24 // The service performs periodic updating of Google Now cards.
28 // Each updating of the cards consists of 3 steps: 25 // Each updating of the cards consists of 3 steps:
29 // 1. Obtaining the location of the machine (asynchronous); 26 // 1. Obtaining the location of the machine (asynchronous);
30 // 2. Making a server request (asynchronous); 27 // 2. Making a server request (asynchronous);
31 // 3. Showing the cards as notifications. 28 // 3. Showing the cards as notifications.
32 class GoogleNowService : public ProfileKeyedService { 29 class GoogleNowService : public ProfileKeyedService,
30 private net::URLFetcherDelegate {
sky 2012/12/13 00:38:46 style guide says no private inheritance.
vadimt 2012/12/13 00:55:10 Done.
33 public: 31 public:
34 // Must call Init after construction. 32 // Must call Init after construction.
35 explicit GoogleNowService(Profile* profile); 33 explicit GoogleNowService(Profile* profile);
36 virtual ~GoogleNowService(); 34 virtual ~GoogleNowService();
37 void Init(); 35 void Init();
38 36
39 private: 37 private:
40 // Parsed response from the server. 38 // Parsed response from the server.
41 struct ServerResponse; 39 struct ServerResponse;
42 40
43 // Returns true if Google Now integration is enabled for the profile. 41 // Returns true if Google Now integration is enabled for the profile.
44 bool IsGoogleNowEnabled() const; 42 bool IsGoogleNowEnabled() const;
45 // Gets new cards from the server and shows them as notifications. 43 // Gets new cards from the server and shows them as notifications.
46 void UpdateCards(); 44 void UpdateCards();
47 45
48 // Schedules next cards update after the specified delay. 46 // Schedules next cards update after the specified delay.
49 void StartWaitingForNextUpdate(base::TimeDelta delay); 47 void StartWaitingForNextUpdate(base::TimeDelta delay);
50 void OnWaitingForNextUpdateEnds(); 48 void OnWaitingForNextUpdateEnds();
51 49
52 // Starts obtaining location of the machine. 50 // Starts obtaining location of the machine.
53 void StartObtainingGeolocation(); 51 void StartObtainingGeolocation();
54 void OnLocationObtained(const content::Geoposition& position); 52 void OnLocationObtained(const content::Geoposition& position);
55 void OnLocationRequestTimeout(); 53 void OnLocationRequestTimeout();
56 54
55 // Builds a URL for a server request.
56 static std::string BuildRequestURL(const content::Geoposition& position);
57 // Starts downloading cards from the server. 57 // Starts downloading cards from the server.
sky 2012/12/13 00:38:46 nit: newline between 56/57.
vadimt 2012/12/13 00:55:10 Done.
58 void StartServerRequest(const content::Geoposition& position); 58 void StartServerRequest(const content::Geoposition& position);
59 void OnServerRequestCompleted(net::URLRequest* request, int num_bytes);
60 59
61 // Parses server response. Returns true if the parsing was successful. 60 // Parses server response. Returns true if the parsing was successful.
62 static bool ParseServerResponse(const net::URLRequest* request, 61 static bool ParseServerResponse(const std::string& response_string,
63 int num_bytes,
64 ServerResponse* server_response); 62 ServerResponse* server_response);
65 63
66 // Shows Google Now cards as notifications. 64 // Shows Google Now cards as notifications.
67 void ShowNotifications(const ServerResponse& server_response); 65 void ShowNotifications(const ServerResponse& server_response);
68 66
67 // URLFetcherDelegate
68 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
69
69 // The profile. 70 // The profile.
70 Profile* const profile_; 71 Profile* const profile_;
71 // Timer to schedule next cards update. 72 // Timer to schedule next cards update.
72 base::OneShotTimer<GoogleNowService> next_update_timer_; 73 base::OneShotTimer<GoogleNowService> next_update_timer_;
73 // Timer to cancel geolocation requests that take too long. 74 // Timer to cancel geolocation requests that take too long.
74 base::OneShotTimer<GoogleNowService> geolocation_request_timer_; 75 base::OneShotTimer<GoogleNowService> geolocation_request_timer_;
75 // Weak factory for the geolocation request callback. Used to ensure 76 // Weak factory for the geolocation request callback. Used to ensure
76 // geolocation request callback is not run after this object is destroyed. 77 // geolocation request callback is not run after this object is destroyed.
77 base::WeakPtrFactory<GoogleNowService> geolocation_request_weak_factory_; 78 base::WeakPtrFactory<GoogleNowService> geolocation_request_weak_factory_;
79 // Fetcher for Google Now cards.
80 scoped_ptr<net::URLFetcher> fetcher_;
78 81
79 DISALLOW_COPY_AND_ASSIGN(GoogleNowService); 82 DISALLOW_COPY_AND_ASSIGN(GoogleNowService);
80 }; 83 };
81 84
82 #endif // CHROME_BROWSER_UI_GOOGLE_NOW_GOOGLE_NOW_SERVICE_H_ 85 #endif // CHROME_BROWSER_UI_GOOGLE_NOW_GOOGLE_NOW_SERVICE_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/google_now/google_now_service.cc » ('j') | chrome/browser/ui/google_now/google_now_service.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698