diff -u b/includes/common.inc b/includes/common.inc --- b/includes/common.inc +++ b/includes/common.inc @@ -4235,6 +4235,12 @@ 'weight' => -1, )); } + else { + // Remove settings to avoid pollution + if (isset($javascript['settings'])) { + unset($javascript['settings']); + } + } } // Otherwise, remove all settings. else { diff -u b/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test --- b/modules/simpletest/tests/common.test +++ b/modules/simpletest/tests/common.test @@ -1570,6 +1570,12 @@ $this->assertNoRaw('Drupal.settings'); $this->assertNoRaw('jquery'); + // Switch to anonymous user. + global $user; + $current_user = $user; + drupal_save_session(FALSE); + $user = drupal_anonymous_user(); + // Repeat, with test helper. $this->resetStaticVariables(); $this->drupalRenderPage(); @@ -1586,10 +1592,56 @@ // When adding any other JavaScript, default libraries and settings should // appear. $this->resetStaticVariables(); - drupal_add_js('core/misc/ajax.js'); + drupal_add_js('misc/ajax.js'); + $this->drupalRenderPage(); + $this->assertRaw('Drupal.settings'); + $this->assertRaw('jquery'); + $this->assertRaw('misc/ajax.js'); + + // Test javascript_always_use_jquery setting. + // Test using default values. + variable_set('javascript_always_use_jquery', TRUE); + $this->resetStaticVariables(); + drupal_add_js('misc/ajax.js'); + $this->drupalRenderPage(); + $this->assertRaw('Drupal.settings'); + $this->assertRaw('jquery'); + $this->assertRaw('misc/ajax.js'); + + // Test javascript_always_use_jquery setting. + // Test using javascript_always_use_jquery set to FALSE. + variable_set('javascript_always_use_jquery', FALSE); + $this->resetStaticVariables(); + drupal_add_js('misc/ajax.js'); $this->drupalRenderPage(); $this->assertRaw('Drupal.settings'); $this->assertRaw('jquery'); + $this->assertRaw('misc/ajax.js'); + + // Test javascript_always_use_jquery setting. + // Test adding a file that doesn't need jquery. + variable_set('javascript_always_use_jquery', TRUE); + $this->resetStaticVariables(); + drupal_add_js('misc/ajax.js', array('need_jquery' => FALSE)); + $this->drupalRenderPage(); + $this->assertRaw('Drupal.settings'); + $this->assertRaw('jquery'); + $this->assertRaw('misc/ajax.js'); + + // Test javascript_always_use_jquery setting. + // Test using javascript_always_use_jquery set to FALSE and adding a file + // that doesn't need jquery. + variable_set('javascript_always_use_jquery', FALSE); + $this->resetStaticVariables(); + drupal_add_js('misc/ajax.js', array('need_jquery' => FALSE)); + $this->drupalRenderPage(); + $this->assertNoRaw('Drupal.settings'); + $this->assertNoRaw('jquery'); + $this->assertRaw('misc/ajax.js'); + + // Switch back to current user. + $user = $current_user; + drupal_save_session(TRUE); } /**