12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_WEBSTORE_DATA_FETCHER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_WEBSTORE_DATA_FETCHER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/weak_ptr.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/url_request/url_fetcher_delegate.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class Value; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace net { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class URLFetcher; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class URLRequestContextGetter; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebstoreDataFetcherDelegate; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// WebstoreDataFetcher fetches web store data and parses it into a 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// DictionaryValue. 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebstoreDataFetcher : public base::SupportsWeakPtr<WebstoreDataFetcher>, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public net::URLFetcherDelegate { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebstoreDataFetcher(WebstoreDataFetcherDelegate* delegate, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) net::URLRequestContextGetter* request_context, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& referrer_url, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string webstore_item_id); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~WebstoreDataFetcher(); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Start(); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void set_max_auto_retries(int max_retries) { 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch max_auto_retries_ = max_retries; 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void OnJsonParseSuccess(scoped_ptr<base::Value> parsed_json); 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void OnJsonParseFailure(const std::string& error); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // net::URLFetcherDelegate overrides: 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebstoreDataFetcherDelegate* delegate_; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) net::URLRequestContextGetter* request_context_; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GURL referrer_url_; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string id_; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // For fetching webstore JSON data. 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<net::URLFetcher> webstore_data_url_fetcher_; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Maximum auto retry times on server 5xx error or ERR_NETWORK_CHANGED. 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Default is 0 which means to use the URLFetcher default behavior. 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int max_auto_retries_; 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WebstoreDataFetcher); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_WEBSTORE_DATA_FETCHER_H_ 70