Index: modules/locale/locale.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.test,v
retrieving revision 1.88
diff -u -p -r1.88 locale.test
--- modules/locale/locale.test	30 Nov 2010 01:05:24 -0000	1.88
+++ modules/locale/locale.test	13 Feb 2011 14:35:54 -0000
@@ -1996,6 +1996,17 @@ class LocaleUILanguageNegotiationTest ex
     $fields = $this->xpath('//div[@id="site-name"]//a[@rel="home" and @href=:url]//span', $args);
     $this->assertTrue($fields[0] == 'Drupal', t('URLs are rewritten using the browser language.'));
   }
+
+  /**
+   * Test that provider info alterations do not break the configuration UI.
+   */
+  function testUIAlteration() {
+    $edit = array('language[enabled][locale-url]' => TRUE);
+    $this->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings'));
+    variable_set('locale_test_language_negotiation_info_alter', TRUE);
+    $this->drupalGet('admin/config/regional/language/configure');
+    $this->assertNoRaw('language[enabled][locale-browser]', t('Browser language detection method correctly removed.'));
+  }
 }
 
 /**
Index: modules/locale/tests/locale_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/tests/locale_test.module,v
retrieving revision 1.6
diff -u -p -r1.6 locale_test.module
--- modules/locale/tests/locale_test.module	9 Oct 2010 13:46:09 -0000	1.6
+++ modules/locale/tests/locale_test.module	13 Feb 2011 14:29:32 -0000
@@ -39,3 +39,12 @@ function locale_test_language_types_info
     );
   }
 }
+
+/**
+ * Implements hook_language_negotiation_info_alter().
+ */
+function locale_test_language_negotiation_info_alter(array &$language_providers) {
+  if (variable_get('locale_test_language_negotiation_info_alter', FALSE)) {
+    unset($language_providers[LOCALE_LANGUAGE_NEGOTIATION_BROWSER]);
+  }
+}
