$params wouldn't just be undef, but actually missing, so validate() was
getting @keys where $params should have been.
https://bugzilla.mozilla.org/show_bug.cgi?id=577765
sub validate {
my ($self, $params, @keys) = @_;
+
+ # If $params is defined but not a reference, then we weren't
+ # sent any parameters at all, and we're getting @keys where
+ # $params should be.
+ return ($self, undef) if (defined $params and !ref $params);
# If @keys is not empty then we convert any named
# parameters that have scalar values to arrayrefs