Переглянути джерело

Fix #239: stop overwriting Firefox profile user prefs

Daniel Gempesaw 10 роки тому
батько
коміт
d86103f6b8
2 змінених файлів з 18 додано та 3 видалено
  1. 5 3
      lib/Selenium/Firefox/Profile.pm
  2. 13 0
      t/Firefox-Profile.t

+ 5 - 3
lib/Selenium/Firefox/Profile.pm

@@ -199,10 +199,12 @@ sub add_webdriver {
         close ($fh);
     }
     my $webdriver_prefs = decode_json($json);
+    my $current_user_prefs = $self->{user_prefs};
 
-    # TODO: Let the user's mutable preferences persist instead of
-    # overwriting them here.
-    $self->set_preference(%{ $webdriver_prefs->{mutable} });
+    $self->set_preference(
+        %{ $webdriver_prefs->{mutable} },
+        %{ $current_user_prefs }
+    );
     $self->set_preference(%{ $webdriver_prefs->{frozen} });
 
     $self->add_extension($webdriver_extension);

+ 13 - 0
t/Firefox-Profile.t

@@ -151,6 +151,19 @@ PREFERENCES: {
                    "$_ preference is formatted properly after packing and unpacking");
         }
     }
+
+  MUTABLE_WEBDRIVER: {
+        my $prefs = {
+            'browser.startup.homepage' => 'mutable!'
+        };
+
+        my $profile = Selenium::Firefox::Profile->new;
+        $profile->set_preference(%$prefs);
+        $profile->add_webdriver('port');
+
+        my $homepage_pref = $profile->get_preference('browser.startup.homepage');
+        is($homepage_pref, '"mutable!"', 'can mutate webdriver.json preferences');
+    }
 }
 
 CROAKING: {