Skip to content

Commit

Permalink
Changed the language method to languages
Browse files Browse the repository at this point in the history
  • Loading branch information
david-dick committed Jan 19, 2024
1 parent 8015945 commit dbf6ea4
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 30 deletions.
6 changes: 3 additions & 3 deletions README
Original file line number Diff line number Diff line change
Expand Up @@ -1764,12 +1764,12 @@ SUBROUTINES/METHODS
$firefox->key_up(CONTROL())
)->content();

language
languages

accepts an optional value for the Accept-Language
accepts an optional list of values for the Accept-Language
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language>
header and sets this using the profile preferences. It returns the
current value, such as 'en-US, en'.
current values as a list, such as ('en-US', 'en').

loaded

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1366,9 +1366,9 @@ accepts a parameter describing a key and returns an action for use in the [perfo
$firefox->key_up(CONTROL())
)->content();

## language
## languages

accepts an optional value for the [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language) header and sets this using the profile preferences. It returns the current value, such as 'en-US, en'.
accepts an optional list of values for the [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language) header and sets this using the profile preferences. It returns the current values as a list, such as ('en-US', 'en').

## loaded

Expand Down
31 changes: 18 additions & 13 deletions lib/Firefox/Marionette.pm
Original file line number Diff line number Diff line change
Expand Up @@ -199,21 +199,26 @@ sub BY_PARTIAL {
return 'partial link text';
}

sub language {
my ( $self, $new_language ) = @_;
sub languages {
my ( $self, @new_languages ) = @_;
my $pref_name = 'intl.accept_languages';
my $script =
'return branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data';
my $old = $self->_context('chrome');
my $old_language = $self->script(
$self->_compress_script( $self->_prefs_interface_preamble() . $script ),
args => [$pref_name]
);
'return navigator.languages'
; # branch.getComplexValue(arguments[0], Components.interfaces.nsIPrefLocalizedString).data';
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 ( defined $new_language ) {
$self->set_pref( $pref_name, $new_language );
if ( scalar @new_languages ) {
$self->set_pref( $pref_name, join q[, ], @new_languages );
}
return $old_language;
return @old_languages;
}

sub _prefs_interface_preamble {
Expand Down Expand Up @@ -13048,9 +13053,9 @@ accepts a parameter describing a key and returns an action for use in the L<perf
$firefox->key_up(CONTROL())
)->content();

=head2 language
=head2 languages

accepts an optional value for the L<Accept-Language|https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language> header and sets this using the profile preferences. It returns the current value, such as 'en-US, en'.
accepts an optional list of values for the L<Accept-Language|https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language> header and sets this using the profile preferences. It returns the current values as a list, such as ('en-US', 'en').

=head2 loaded

Expand Down
22 changes: 10 additions & 12 deletions t/01-marionette.t
Original file line number Diff line number Diff line change
Expand Up @@ -1482,19 +1482,17 @@ SKIP: {
ok($firefox->aria_role($element) =~ /^(?:toggle[ ])?button$/smx, "Retrieved the ARIA role correctly:" . $firefox->aria_role($element));
ok($firefox->find_id('save')->aria_role() =~ /^(?:toggle[ ])?button$/smx, "Retrieved the ARIA label correctly:" . $firefox->find_id('save')->aria_role());
}
my $browser_language = $firefox->script('return navigator.language');
my $quoted_browser_language = quotemeta $browser_language;
my $original_language = $firefox->language();
ok($original_language =~ /^$quoted_browser_language/smx, "\$firefox->language() contains navigator.language as it's first entry:$original_language vs $browser_language");
my $new_language = 'en-AU,en-GB, en';
ok($firefox->language($new_language) eq $original_language, "\$firefox->language(\"$new_language\") returns correctly");
$browser_language = $firefox->script('return navigator.language');
$quoted_browser_language = quotemeta $browser_language;
ok($new_language =~ /^$quoted_browser_language/smx, "\$firefox->language() contains navigator.language as it's first entry:$new_language vs $browser_language");
my $browser_language = join q[, ], @{$firefox->script('return navigator.languages')};
my $original_language = join q[, ], $firefox->languages();
ok($original_language eq $browser_language, "\$firefox->languages() equals navigator.languages:'$original_language' vs '$browser_language'");
my $new_language = 'en-AU, en-GB, en';
ok((join q[, ], $firefox->languages(split q[, ], $new_language)) eq $original_language, "\$firefox->languages(split q[, ], \"$new_language\") returns correctly");
$browser_language = join q[, ], @{$firefox->script('return navigator.languages')};
ok($new_language eq $browser_language, "\$firefox->languages() equals navigator.languages:'$new_language' vs '$browser_language'");
my $lone_language = 'en-GB';
ok($firefox->language($lone_language) eq $new_language, "\$firefox->language(\"$lone_language\") returns correctly");
$browser_language = $firefox->script('return navigator.language');
ok($lone_language eq $browser_language, "\$firefox->language() matches navigator.language b/c there is only one entry:$lone_language vs $browser_language");
ok((join q[, ], $firefox->languages($lone_language)) eq $new_language, "\$firefox->languages(\"$lone_language\") returns correctly");
$browser_language = join q[, ], @{$firefox->script('return navigator.languages')};
ok($lone_language eq $browser_language, "\$firefox->languages() matches navigator.language b/c there is only one entry:'$lone_language' vs '$browser_language'");
my $test_agent_string = "Firefox::Marionette v$Firefox::Marionette::VERSION test suite";
my $original_agent = $firefox->agent($test_agent_string);
ok($original_agent, "\$firefox->agent() returns a user agent string:$original_agent");
Expand Down

0 comments on commit dbf6ea4

Please sign in to comment.