Commit b853fc57 authored by eustas@chromium.org's avatar eustas@chromium.org

DevToolsManagerDelegate: parse all "emulateNetworkConditions" parameters

BUG=245436

Review URL: https://codereview.chromium.org/319133002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275680 0039d316-1c4b-4281-b951-d872f2087c98
parent 9e0a44c7
......@@ -81,16 +81,39 @@ ChromeDevToolsManagerDelegate::EmulateNetworkConditions(
content::DevToolsAgentHost* agent_host,
DevToolsProtocol::Command* command) {
base::DictionaryValue* params = command->params();
std::vector<std::string> domains;
base::ListValue* domain_list = NULL;
const char* domains_param =
chrome::devtools::Network::emulateNetworkConditions::kParamDomains;
if (!params || !params->GetList(domains_param, &domain_list))
return command->InvalidParamResponse(domains_param);
size_t size = domain_list->GetSize();
for (size_t i = 0; i < size; ++i) {
std::string domain;
if (!domain_list->GetString(i, &domain))
return command->InvalidParamResponse(domains_param);
domains.push_back(domain);
}
bool offline = false;
const char* offline_param =
chrome::devtools::Network::emulateNetworkConditions::kParamOffline;
if (!params || !params->GetBoolean(offline_param, &offline))
if (!params->GetBoolean(offline_param, &offline))
return command->InvalidParamResponse(offline_param);
double maximal_throughput = 0.0;
const char* maximal_throughput_param =
chrome::devtools::Network::emulateNetworkConditions::kParamMaximalThroughput;
if (!params->GetDouble(maximal_throughput_param, &maximal_throughput))
return command->InvalidParamResponse(maximal_throughput_param);
if (maximal_throughput < 0.0)
maximal_throughput = 0.0;
EnsureDevtoolsCallbackRegistered();
scoped_refptr<DevToolsNetworkConditions> conditions;
if (offline)
conditions = new DevToolsNetworkConditions(std::vector<std::string>());
if (offline || maximal_throughput)
conditions = new DevToolsNetworkConditions(domains, maximal_throughput);
UpdateNetworkState(agent_host, conditions);
return command->SuccessResponse(NULL);
}
......
......@@ -7,8 +7,10 @@
#include "url/gurl.h"
DevToolsNetworkConditions::DevToolsNetworkConditions(
const std::vector<std::string>& domains)
: domains_(domains){
const std::vector<std::string>& domains,
double maximal_throughput)
: domains_(domains),
maximal_throughput_(maximal_throughput) {
}
DevToolsNetworkConditions::~DevToolsNetworkConditions() {
......@@ -26,5 +28,9 @@ bool DevToolsNetworkConditions::HasMatchingDomain(const GURL& url) const {
}
bool DevToolsNetworkConditions::IsOffline() const {
return true;
return maximal_throughput_ == 0.0;
}
bool DevToolsNetworkConditions::IsThrottling() const {
return maximal_throughput_ != 0.0;
}
......@@ -16,10 +16,14 @@ class GURL;
class DevToolsNetworkConditions
: public base::RefCounted<DevToolsNetworkConditions> {
public:
explicit DevToolsNetworkConditions(const std::vector<std::string>& domains);
DevToolsNetworkConditions(const std::vector<std::string>& domains,
double maximal_throughput);
bool HasMatchingDomain(const GURL& url) const;
bool IsOffline() const;
bool IsThrottling() const;
double maximal_throughput() const { return maximal_throughput_; }
private:
friend class base::RefCounted<DevToolsNetworkConditions>;
......@@ -29,6 +33,7 @@ class DevToolsNetworkConditions
// List of domains that will be affected by network conditions.
typedef std::vector<std::string> Domains;
const Domains domains_;
const double maximal_throughput_;
DISALLOW_COPY_AND_ASSIGN(DevToolsNetworkConditions);
};
......
......@@ -68,7 +68,7 @@ class DevToolsNetworkControllerHelper {
domains.push_back(kCom);
scoped_refptr<DevToolsNetworkConditions> conditions;
if (offline)
conditions = new DevToolsNetworkConditions(domains);
conditions = new DevToolsNetworkConditions(domains, 0.0);
controller_.SetNetworkStateOnIO(client_id, conditions);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment