///|
/// Validate the optional top-level browsing context scope.
fn BidiProtocol::validate_network_data_collector_contexts(
self : BidiProtocol,
request_id : Int,
raw_contexts : Json?,
) -> Json?? {
match raw_contexts {
Some(Array(items)) =>
if items.length() == 0 {
self.send_error(
request_id, "invalid argument", "contexts must not be an empty array",
)
return None
} else {
let contexts : Array[Json] = []
for item in items {
match item {
String(ctx_id) =>
if !self.manager.has_session(ctx_id) {
self.send_error(
request_id,
"no such frame",
"Unknown context: " + ctx_id,
)
return None
} else if self.context_parent.contains(ctx_id) {
self.send_error(
request_id, "invalid argument", "context must be top-level",
)
return None
} else {
contexts.push(Json::string(ctx_id))
}
_ => {
self.send_error(
request_id, "invalid argument", "contexts entries must be strings",
)
return None
}
}
}
Some(Some(Json::array(contexts)))
}
Some(_) => {
self.send_error(
request_id, "invalid argument", "contexts must be an array",
)
None
}
None => Some(None)
}
}
///|
/// Validate the optional user context scope.
fn BidiProtocol::validate_network_data_collector_user_contexts(
self : BidiProtocol,
request_id : Int,
raw_user_contexts : Json?,
) -> Json?? {
match raw_user_contexts {
Some(Array(items)) =>
if items.length() == 0 {
self.send_error(
request_id, "invalid argument", "userContexts must not be an empty array",
)
return None
} else {
let user_contexts : Array[Json] = []
for item in items {
match item {
String(user_context_id) =>
if !self.user_contexts.get(user_context_id).unwrap_or(false) {
self.send_error(
request_id,
"no such user context",
"Unknown user context: " + user_context_id,
)
return None
} else {
user_contexts.push(Json::string(user_context_id))
}
_ => {
self.send_error(
request_id, "invalid argument", "userContexts entries must be strings",
)
return None
}
}
}
Some(Some(Json::array(user_contexts)))
}
Some(_) => {
self.send_error(
request_id, "invalid argument", "userContexts must be an array",
)
None
}
None => Some(None)
}
}