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 )