blib/lib/WWW/Mechanize/Chrome.pm | |||
---|---|---|---|
Criterion | Covered | Total | % |
condition | 22 | 560 | 3.9 |
line | !l | l&&!r | l&&r | condition |
---|---|---|---|---|
492 | 0 | 0 | 0 | exists $options->{'enable_first_run'} and $options->{'enable_first_run'} |
519 | 0 | 0 | 0 | exists $options->{'default_browser_check'} and $options->{'default_browser_check'} |
556 | 0 | 0 | 0 | $^O =~ /mswin/i && $program =~ /[\s|<>&]/ |
813 | 0 | 0 | 0 | $lines-- and not defined $devtools_url |
0 | 0 | 0 | $lines-- and not defined $devtools_url and not eof $fh | |
914 | 1 | 0 | 0 | $options{'tab'} and $options{'tab'} eq "current" |
942 | 1 | 0 | 0 | $options{'driver'} and $options{'driver_transport'} |
1117 | 0 | 0 | 0 | $self->{'kill_pid'} and my $pid = delete $self->{'pid'} |
1271 | 1 | 0 | 0 | &blessed($self) and $self->target |
1440 | 0 | 0 | 0 | $targetInfo->{'params'}{'targetInfo'}{'type'} eq "page" and not $known_targets{$id} |
1973 | 0 | 1 | 0 | $_[0]{'autoclose'} and $_[0]->target |
1 | 0 | 0 | $_[0]{'autoclose'} and $_[0]->target and $_[0]->tab | |
1995 | 0 | 1 | 0 | $_[0]{'autoclose'} and $_[0]{'kill_pid'} |
2001 | 0 | 0 | 0 | $pid and kill 0, $pid |
2017 | 0 | 0 | 0 | $res != -1 and $res != $pid |
2246 | 0 | 0 | 0 | $ev->{'method'} eq 'Page.navigatedWithinDocument' && $requestId && (!exists $ev->{'params'}{'requestId'} || $ev->{'params'}{'requestId'} eq $requestId) |
2248 | 0 | 0 | 0 | $ev->{'method'} eq 'Page.frameClearedScheduledNavigation' && $ev->{'params'}{'frameId'} eq $frameId |
2261 | 0 | 0 | 0 | $ev->{'method'} eq 'Network.loadingFailed' && $requestId && $ev->{'params'}{'requestId'} eq $requestId |
2266 | 0 | 0 | 0 | $ev->{'method'} eq 'Network.responseReceived' && $requestId && $ev->{'params'}{'requestId'} eq $requestId && exists $ev->{'params'}{'response'}{'headers'}{'Content-Disposition'} && $ev->{'params'}{'response'}{'headers'}{'Content-Disposition'} =~ /^attachment\b/ |
2298 | 0 | 0 | 0 | $ev->{'method'} eq "Page.frameResized" and 0 + keys(%{$$ev{"params"};}) == 0 |
2371 | 0 | 0 | 0 | not $options{'intrapage'} and $navigated |
2608 | 0 | 0 | 0 | defined $frameId and $_->{'method'} eq "Network.requestWillBeSent" |
0 | 0 | 0 | defined $frameId and $_->{'method'} eq "Network.requestWillBeSent" and $_->{'params'}{'frameId'} eq $frameId | |
2611 | 0 | 0 | 0 | $url and $_->{'params'}{'request'}{'url'} eq $url |
2631 | 0 | 0 | 0 | exists $_->{'params'}{'requestId'} and $_->{'params'}{'requestId'} eq $requestId |
0 | 0 | 0 | not exists $_->{'params'}{'requestId'} and $this_frame eq $frameId | |
2647 | 0 | 0 | 0 | $_->{'method'} eq "Network.requestWillBeSent" and $rfi eq $fi |
2666 | 0 | 0 | 0 | $events{'Page.frameNavigated'} && $events{'Page.frameNavigated'}{'params'}{'frame'}{'url'} eq 'about:blank' |
2667 | 0 | 0 | 0 | $res = $events{'Page.frameNavigated'} and $res->{'params'}{'frame'}{'unreachableUrl'} |
0 | 0 | 0 | $res = $events{'Page.frameNavigated'} and $res->{'params'}{'frame'}{'url'} =~ m[^file://] | |
0 | 0 | 0 | $res = $events{'Page.frameClearedScheduledNavigation'} and $res->{'params'}{'frameId'} eq $frameId | |
0 | 0 | 0 | $res = $events{'Page.frameStoppedLoading'} and $res->{'params'}{'frameId'} eq $frameId | |
3033 | 0 | 0 | 0 | $self->status and not $self->status =~ /^2/ |
0 | 0 | 0 | $self->status and not $self->status =~ /^2/ and $self->status != 0 | |
3492 | 0 | 0 | 0 | not $ct and my $r = $self->response |
3517 | 0 | 0 | 0 | defined $self->ct && $self->ct eq 'text/html' |
3729 | 0 | 0 | 0 | defined $p->{'url'} and not $link->url eq $p->{'url'} |
3730 | 0 | 0 | 0 | defined $p->{'url_regex'} and not $link->url =~ /$p->{'url_regex'}/ |
3731 | 0 | 0 | 0 | defined $p->{'url_abs'} and not $link->url_abs eq $p->{'url_abs'} |
3732 | 0 | 0 | 0 | defined $p->{'url_abs_regex'} and not $link->url_abs =~ /$p->{'url_abs_regex'}/ |
3733 | 0 | 0 | 0 | defined $link->text && $link->text eq $p->{'text'} |
0 | 0 | 0 | defined $p->{'text'} and not defined $link->text && $link->text eq $p->{'text'} | |
3734 | 0 | 0 | 0 | defined $link->text && $link->text =~ /$p->{'text_regex'}/ |
0 | 0 | 0 | defined $p->{'text_regex'} and not defined $link->text && $link->text =~ /$p->{'text_regex'}/ | |
3735 | 0 | 0 | 0 | defined $link->name && $link->name eq $p->{'name'} |
0 | 0 | 0 | defined $p->{'name'} and not defined $link->name && $link->name eq $p->{'name'} | |
3736 | 0 | 0 | 0 | defined $link->name && $link->name =~ /$p->{'name_regex'}/ |
0 | 0 | 0 | defined $p->{'name_regex'} and not defined $link->name && $link->name =~ /$p->{'name_regex'}/ | |
3737 | 0 | 0 | 0 | $link->tag && $link->tag eq $p->{'tag'} |
0 | 0 | 0 | defined $p->{'tag'} and not $link->tag && $link->tag eq $p->{'tag'} | |
3738 | 0 | 0 | 0 | $link->tag && $link->tag =~ /$p->{'tag_regex'}/ |
0 | 0 | 0 | defined $p->{'tag_regex'} and not $link->tag && $link->tag =~ /$p->{'tag_regex'}/ | |
3740 | 0 | 0 | 0 | $link->attrs->{'id'} && $link->attrs->{'id'} eq $p->{'id'} |
0 | 0 | 0 | defined $p->{'id'} and not $link->attrs->{'id'} && $link->attrs->{'id'} eq $p->{'id'} | |
3741 | 0 | 0 | 0 | $link->attrs->{'id'} && $link->attrs->{'id'} =~ /$p->{'id_regex'}/ |
0 | 0 | 0 | defined $p->{'id_regex'} and not $link->attrs->{'id'} && $link->attrs->{'id'} =~ /$p->{'id_regex'}/ | |
3742 | 0 | 0 | 0 | $link->attrs->{'class'} && $link->attrs->{'class'} eq $p->{'class'} |
0 | 0 | 0 | defined $p->{'class'} and not $link->attrs->{'class'} && $link->attrs->{'class'} eq $p->{'class'} | |
3743 | 0 | 0 | 0 | $link->attrs->{'class'} && $link->attrs->{'class'} =~ /$p->{'class_regex'}/ |
0 | 0 | 0 | defined $p->{'class_regex'} and not $link->attrs->{'class'} && $link->attrs->{'class'} =~ /$p->{'class_regex'}/ | |
3765 | 0 | 0 | 0 | $single and exists $opts{'n'} |
3984 | 0 | 0 | 0 | "html" ne $tag and "" ne $tag |
4130 | 0 | 0 | 0 | $nodeGeneration != $s->{'_currentNodeGeneration'} && $retries-- |
4322 | 0 | 0 | 0 | $inSubTree and exists $foundNodes{$node->{'nodeId'}} |
4374 | 0 | 0 | 0 | defined wantarray and not wantarray |
4421 | 0 | 0 | 0 | not $zero_allowed and @res == 0 |
4424 | 0 | 0 | 0 | not $two_allowed and @res > 1 |
4530 | 0 | 0 | 0 | ref $name and &blessed($name) |
0 | 0 | 0 | ref $name and &blessed($name) and $name->isa("WWW::Mechanize::Chrome::Node") | |
5047 | 0 | 0 | 0 | defined $index and not $index =~ /^\d+$/ |
5118 | 0 | 0 | 0 | defined $pre and not ref $pre |
5121 | 0 | 0 | 0 | defined $post and not ref $post |
5135 | 0 | 0 | 0 | lc $tag eq "input" and $obj->get_attribute("type", "live", 1) eq "radio" |
5234 | 0 | 0 | 0 | defined $pre and not ref $pre |
5237 | 0 | 0 | 0 | defined $post and not ref $post |
5426 | 0 | 0 | 0 | ref $name and &blessed($name) |
5831 | 0 | 0 | 0 | $v and !$timeout || time < $timeout_after |
5844 | 0 | 0 | 0 | $v and $timeout |
0 | 0 | 0 | $v and $timeout and time >= $timeout_after | |
6463 | 0 | 0 | 0 | @{$_->{'trace'};} && $_->{'trace'}[-1]{'function'} |
line | l | !l | condition |
---|---|---|---|
438 | 0 | 0 | $options->{'launch_arg'} ||= [] |
451 | 0 | 0 | $options->{'port'} //= 9222 |
454 | 0 | 0 | $options->{'port'} ||= 0 |
841 | 0 | 0 | $self->_generation || 0 |
870 | 1 | 0 | $t->new->type || 'websocket' |
892 | 0 | 1 | $options{'startup_timeout'} //= 20 |
894 | 0 | 1 | $options{'js_events'} ||= [] |
902 | 0 | 1 | $options{'host'} || '127.0.0.1' |
905 | 0 | 1 | $options{'extra_headers'} ||= {} |
908 | 0 | 0 | $options{'tab'} ||= undef |
910 | 0 | 1 | $options{'tab'} ||= 0 |
944 | 0 | 0 | $options{'port'} //= 9222 |
1506 | 0 | 0 | $options{'latency'} //= -1 |
0 | 0 | $options{'downloadThroughput'} //= -1 | |
0 | 0 | $options{'uploadThroughput'} //= -1 | |
1745 | 0 | 0 | $_->{'type'} || '' |
2170 | 0 | 0 | $frameId || '-' |
2185 | 0 | 0 | $frameId || '-' |
2216 | 0 | 0 | $frameId || '-' |
2544 | 0 | 0 | $res->{'params'}{'response'}{'status'} || 200 |
2566 | 0 | 0 | $ct ||= "text/plain" |
2589 | 0 | 0 | $res->{'params'}{'response'}{'status'} || 599 |
2645 | 0 | 0 | $frameId || '' |
2646 | 0 | 0 | $_->{'params'}{'frameId'} || '' |
2738 | 0 | 0 | $res->{'params'}{'response'}{'status'} || 200 |
3176 | 0 | 0 | shift() || 20 |
3261 | 0 | 0 | $self->ct || 'text/html' |
3318 | 0 | 0 | $options{'format'} ||= "html" |
3627 | 0 | 0 | ref $query || '' |
3768 | 0 | 0 | delete $opts{'n'} || 1 |
3868 | 0 | 0 | $opts{'n'} || '' |
4110 | 0 | 0 | $s->{'_currentNodeGeneration'} //= 0 |
4349 | 0 | 0 | ref $query || '' |
4360 | 0 | 0 | $options{'index'} || 0 |
4426 | 0 | 0 | $_->get_text || '<no text>' |
4452 | 0 | 0 | ref $query || '' |
4545 | 0 | 0 | $options{'name'} || '' |
4747 | 0 | 0 | shift() || \*STDOUT |
4750 | 0 | 0 | $form->get_attribute('name', 'live', 1) || '<no name>' |
4756 | 0 | 0 | $f->get_attribute('type', 'live', 1) || '' |
4760 | 0 | 0 | $f->get_attribute('name') || '<no name>' |
4953 | 0 | 0 | $options{'keys'} ||= [map({"type", "char", "text", $_}, split(//, $options{'string'}, 0))] |
5123 | 0 | 0 | $pre ||= ["focus"] |
5124 | 0 | 0 | $post ||= ["change"] |
5239 | 0 | 0 | $pre ||= ["focus"] |
5240 | 0 | 0 | $post ||= ["change"] |
5363 | 0 | 0 | "HASH" eq ref $value or "" |
0 | 0 | "ARRAY" eq ref $value or "" | |
5475 | 0 | 0 | $target->get_attribute('checked', 'live', 1) || '' |
5594 | 0 | 0 | delete $options{'fields'} || {} |
5609 | 0 | 0 | $options{'x'} || 0 |
0 | 0 | $options{'y'} || 0 | |
5818 | 0 | 0 | delete $options{'sleep'} || 0.3 |
5819 | 0 | 0 | delete $options{'timeout'} || 0 |
5820 | 0 | 0 | delete $options{'max_wait'} || 0 |
5887 | 0 | 0 | delete $options{'sleep'} || 0.3 |
5888 | 0 | 0 | delete $options{'timeout'} || 0 |
6072 | 0 | 0 | $options{'save'} ||= undef |
6073 | 0 | 0 | $options{'seen'} ||= {} |
6074 | 0 | 0 | $options{'names'} ||= {} |
6075 | 0 | 0 | $options{'target_dir'} ||= "." |
6076 | 0 | 0 | $options{'wanted'} ||= sub ($res) { |
6341 | 0 | 0 | $options{'format'} ||= "png" |
6507 | 0 | 0 | $options{'format'} ||= "png" |
6508 | 0 | 0 | $options{'everyNthFrame'} ||= 1 |
line | l | !l&&r | !l&&!r | condition |
---|---|---|---|---|
436 | 0 | 0 | 0 | 'File::Spec'->rel2abs($program) || $program |
459 | 0 | 0 | 0 | $options->{'listen_host'} or $options->{'host'} |
460 | 0 | 0 | 0 | $options->{'listen_host'} || $options->{'host'} |
488 | 0 | 0 | 0 | not exists $options->{'enable_automation'} or $options->{'enable_automation'} |
496 | 0 | 0 | 0 | not exists $options->{'mute_audio'} or $options->{'mute_audio'} |
500 | 0 | 0 | 0 | $options->{'no_sandbox'} || !exists $options->{'no_zygote'} |
859 | 0 | 1 | 3 | ref $options->{'transport'} or $options->{'transport'} |
1 | 0 | 3 | ref $options->{'transport'} or $options->{'transport'} or $ENV{'WWW_MECHANIZE_CHROME_TRANSPORT'} | |
912 | 0 | 1 | 0 | $options{'existing_tab'} ||= defined $options{'tab'} |
921 | 0 | 1 | 0 | $options{'connection_style'} || $ENV{'WWW_MECHANIZE_CHROME_CONNECTION_STYLE'} || $class->connection_style(\%options) |
922 | 0 | 0 | 1 | $options{'port'} or $options{'pid'} |
934 | 0 | 1 | 0 | $options{'cleanup_signal'} ||= $^O =~ /mswin32/i ? "SIGKILL" : ($^O =~ /darwin/i ? "SIGKILL" : "SIGTERM") |
938 | 0 | 1 | 0 | ref $class || $class |
940 | 0 | 1 | 0 | $self->{'log'} ||= $self->_build_log |
1000 | 0 | 0 | 0 | $options{'driver_transport'} ||= "Chrome::DevToolsProtocol"->new(@connection, "transport", $options{'transport'}, "log", $options{'log'}, &maybe("json_log_fh", scalar delete $options{'json_log_fh'})) |
1016 | 0 | 0 | 0 | $options{'target'} ||= "Chrome::DevToolsProtocol::Target"->new("auto_close", 0, "transport", delete $options{'driver_transport'}, "error_handler", sub { |
1103 | 0 | 0 | 0 | !$options{'existing_tab'} || $options{'new_tab'} |
1298 | 0 | 0 | 0 | $self->{'chrome_version'} ||= do { |
1506 | 0 | 0 | 0 | $options{'offline'} //= JSON::false() |
2180 | 0 | 0 | 0 | $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation" |
0 | 0 | 0 | $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation" or $ev->{'method'} eq "Network.requestWillBeSent" | |
2191 | 0 | 0 | 0 | $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation" |
0 | 0 | 0 | $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation" or $ev->{'method'} eq "Network.requestWillBeSent" | |
2211 | 0 | 0 | 0 | $options{'frameId'} || $self->frameId |
2212 | 0 | 0 | 0 | $options{'requestId'} || $self->requestId |
2232 | 0 | 0 | 0 | $frameId ||= $s->_fetchFrameId($ev) |
2233 | 0 | 0 | 0 | $requestId ||= $s->_fetchRequestId($ev) |
2240 | 0 | 0 | 0 | $ev->{'method'} eq 'Page.frameStoppedLoading' && $ev->{'params'}{'frameId'} eq $frameId || $ev->{'method'} eq 'Network.loadingFinished' && (!$ev->{'params'}{'frameId'} || $ev->{'params'}{'frameId'} eq ($frameId || '')) && (!$ev->{'params'}{'requestId'} || $ev->{'params'}{'requestId'} eq ($requestId || '')) |
2248 | 0 | 0 | 0 | $internal_navigation ||= $ev->{'method'} eq 'Page.frameClearedScheduledNavigation' && $ev->{'params'}{'frameId'} eq $frameId |
2268 | 0 | 0 | 0 | $stopped || $internal_navigation || $failed || $download |
2329 | 0 | 0 | 0 | $frameId ||= $s->_fetchFrameId($ev) |
2345 | 0 | 0 | 0 | $frameId ||= $s->_fetchFrameId($ev) |
2346 | 0 | 0 | 0 | $requestId ||= $s->_fetchRequestId($ev) |
2381 | 0 | 0 | 0 | $self->{'frameId'} ||= $nav->{'frameId'} |
2614 | 0 | 0 | 0 | $requestId ||= $_->{'params'}{'requestId'} |
2630 | 0 | 0 | 0 | exists $_->{'params'}{'frameId'} && $_->{'params'}{'frameId'} || exists $_->{'params'}{'frame'}{'id'} && $_->{'params'}{'frame'}{'id'} |
2648 | 0 | 0 | 0 | $requestId ||= $_->{'params'}{'requestId'} |
2649 | 0 | 0 | 0 | $loaderId ||= $_->{'params'}{'loaderId'} |
2650 | 0 | 0 | 0 | $requestId ||= $_->{'params'}{'requestId'} |
2658 | 0 | 0 | 0 | $events{$_->{'method'}} ||= $_ |
2911 | 0 | 0 | 0 | $self->{'cookie_jar'} ||= do { |
3035 | 0 | 0 | 0 | $self->response->message || sprintf('Got status code %d', $self->status) |
3471 | 0 | 0 | 0 | $base ||= $self->uri |
3626 | 0 | 0 | 0 | $options{'user_info'} ||= "CSS selector '${query}'" |
3764 | 0 | 0 | 0 | delete $opts{'one'} || $single |
3785 | 0 | 0 | 0 | $lefthand{$lvalue} || '@' . $lvalue |
4364 | 0 | 0 | 0 | $single || $first || $maybe || $any |
4365 | 0 | 0 | 0 | $options{'user_info'} ||= join("|", @$query) |
4368 | 0 | 0 | 0 | $single || $first |
4369 | 0 | 0 | 0 | !($single || $maybe) || defined $options{'index'} |
4373 | 0 | 0 | 0 | exists $options{'all'} or $return_first_element |
4456 | 0 | 0 | 0 | $options{'user_info'} ||= "id " . join(" or ", map({"'${_}'";} @$query)) . " found" |
4592 | 0 | 0 | 0 | $rename{$meth} || $meth |
4671 | 0 | 0 | 0 | $node ||= $self->xpath($xpath, "node", $self->current_form, "single", 1, "user_message", $user_message) |
5246 | 0 | 0 | 0 | $index == 1 or $index =~ /[^1]1$/ |
0 | 0 | 0 | $index == 2 or $index =~ /[^1]2$/ | |
0 | 0 | 0 | $index == 3 or $index =~ /[^1]3$/ | |
5821 | 0 | 0 | 0 | $timeout ||= $wait |
5831 | 0 | 0 | 0 | !$timeout || time < $timeout_after |
5896 | 0 | 0 | 0 | not $timeout_after or time < $timeout_after |
5954 | 0 | 0 | 0 | $target->{'scalex'} || $target->{'scaley'} |
6133 | 0 | 0 | 0 | $names{$resource->{'url'}} ||= "File::Spec"->catfile($target_dir, $names{$resource->{'url'}}) |
line | l&&r | l&&!r | !l&&r | !l&&!r | condition |
---|---|---|---|---|---|
5476 | 0 | 0 | 0 | 0 | $set xor $is_set |