blob: 8092eca43571e07b62e82b8b56e50f81a9d3eeea [file] [log] [blame]
// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_APP_MODE_FAKE_CWS_H_
#define CHROME_BROWSER_CHROMEOS_APP_MODE_FAKE_CWS_H_
#include <map>
#include <string>
#include <vector>
#include "base/macros.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
#include "url/gurl.h"
namespace chromeos {
// Simple fake CWS update check request handler that returns a fixed update
// check response. The response is created either from SetUpdateCrx() or
// SetNoUpdate().
class FakeCWS {
public:
FakeCWS();
~FakeCWS();
// Initializes as CWS request handler and overrides app gallery command line
// switches.
void Init(net::EmbeddedTestServer* embedded_test_server);
// Initializes as a private store handler using the given server and URL end
// point. Override app gallery command line and provide it to Extensions
// client.
void InitAsPrivateStore(net::EmbeddedTestServer* embedded_test_server,
const std::string& update_check_end_point);
// Sets up the update check response with has_update template.
void SetUpdateCrx(const std::string& app_id,
const std::string& crx_file,
const std::string& version);
// Sets up the update check response with no_update template.
void SetNoUpdate(const std::string& app_id);
// Returns the current |update_check_count_| and resets it.
int GetUpdateCheckCountAndReset();
private:
enum class GalleryUpdateMode {
kOnlyCommandLine,
kModifyExtensionsClient,
};
void SetupWebStoreURL(const GURL& test_server_url);
void OverrideGalleryCommandlineSwitches(
GalleryUpdateMode gallery_update_mode);
bool GetUpdateCheckContent(const std::vector<std::string>& ids,
std::string* update_check_content);
// Request handler for kiosk app update server.
std::unique_ptr<net::test_server::HttpResponse> HandleRequest(
const net::test_server::HttpRequest& request);
GURL web_store_url_;
std::string has_update_template_;
std::string no_update_template_;
std::string update_check_end_point_;
// Map keyed by app_id to app_update_content.
std::map<std::string, std::string> id_to_update_check_content_map_;
int update_check_count_;
DISALLOW_COPY_AND_ASSIGN(FakeCWS);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_APP_MODE_FAKE_CWS_H_