Firefox-Marionette
view release on metacpan or search on metacpan
lib/Firefox/Marionette.pm view on Meta::CPAN
Carp::carp(
'**** DEPRECATED METHOD - using find(..., BY_CLASS()) HAS BEEN REPLACED BY find_class ****'
);
return 'class name';
}
sub BY_SELECTOR {
Carp::carp(
'**** DEPRECATED METHOD - using find(..., BY_SELECTOR()) HAS BEEN REPLACED BY find_selector ****'
);
return 'css selector';
}
sub BY_LINK {
Carp::carp(
'**** DEPRECATED METHOD - using find(..., BY_LINK()) HAS BEEN REPLACED BY find_link ****'
);
return 'link text';
}
sub BY_PARTIAL {
Carp::carp(
'**** DEPRECATED METHOD - using find(..., BY_PARTIAL()) HAS BEEN REPLACED BY find_partial ****'
);
return 'partial link text';
}
sub languages {
my ( $self, @new_languages ) = @_;
my $pref_name = 'intl.accept_languages';
my $script =
'return navigator.languages || branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data.split(/,\s*/)';
my $old = $self->_context('chrome');
my @old_languages = @{
$self->script(
$self->_compress_script(
$self->_prefs_interface_preamble() . $script
),
args => [$pref_name]
)
};
$self->_context($old);
if ( scalar @new_languages ) {
$self->set_pref( $pref_name, join q[, ], @new_languages );
}
return @old_languages;
}
sub _setup_trackable {
my ( $self, $trackable ) = @_;
my $value = $trackable ? 0 : 1;
$self->set_pref( 'privacy.fingerprintingProtection', $value );
$self->set_pref( 'privacy.fingerprintingProtection.pbmode', $value );
return $self;
}
sub _setup_geo {
my ( $self, $geo ) = @_;
$self->set_pref( 'geo.enabled', 1 );
$self->set_pref( 'geo.provider.use_geoclue', 0 );
$self->set_pref( 'geo.provider.use_corelocation', 0 );
$self->set_pref( 'geo.provider.testing', 1 );
$self->set_pref( 'geo.prompt.testing', 1 );
$self->set_pref( 'geo.prompt.testing.allow', 1 );
$self->set_pref( 'geo.security.allowinsecure', 1 );
$self->set_pref( 'geo.wifi.scan', 1 );
$self->set_pref( 'permissions.default.geo', 1 );
if ( ref $geo ) {
if ( ( Scalar::Util::blessed($geo) ) && ( $geo->isa('URI') ) ) {
$self->geo( $self->json($geo) );
}
else {
$self->geo($geo);
}
}
elsif ( $geo =~ /^(?:data|http)/smx ) {
$self->geo( $self->json($geo) );
}
return $self;
}
sub tz {
my ( $self, $timezone ) = @_;
require Firefox::Marionette::Extension::Timezone;
my %parameters = ( timezone => $timezone );
$self->script(
$self->_compress_script(
Firefox::Marionette::Extension::Timezone->timezone_contents(
%parameters)
)
);
if ( $self->{timezone_extension} ) {
$self->uninstall( delete $self->{timezone_extension} );
}
my $zip = Firefox::Marionette::Extension::Timezone->new(%parameters);
$self->{timezone_extension} =
$self->_install_extension_by_handle( $zip, 'timezone-0.0.1.xpi' );
return $self;
}
sub geo {
my ( $self, @parameters ) = @_;
my $location;
if ( scalar @parameters ) {
$location = Firefox::Marionette::GeoLocation->new(@parameters);
}
if ( defined $location ) {
$self->set_pref( 'geo.provider.network.url',
q[data:application/json,]
. JSON->new()->convert_blessed()->encode($location) );
$self->set_pref( 'geo.wifi.uri',
q[data:application/json,]
. JSON->new()->convert_blessed()->encode($location) );
if ( my $ipgeolocation_timezone = $location->tz() ) {
$self->tz($ipgeolocation_timezone);
}
return $self;
}
if ( my $geo_location = $self->_get_geolocation() ) {
( run in 0.723 second using v1.01-cache-2.11-cpan-302cb4679cc )