diff --git a/core/includes/session.inc b/core/includes/session.inc
index b07997c..0066517 100644
--- a/core/includes/session.inc
+++ b/core/includes/session.inc
@@ -102,6 +102,9 @@ function _drupal_session_read($sid) {
     $user = db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = :sid", array(':sid' => $sid))->fetchObject();
   }
 
+  // To allow strict comparisons, cast uid to an int.
+  $user->uid = (int) $user->uid;
+
   // We found the client's session record and they are an authenticated,
   // active user.
   if ($user && $user->uid > 0 && $user->status == 1) {
diff --git a/core/modules/aggregator/aggregator.admin.inc b/core/modules/aggregator/aggregator.admin.inc
index 09da1cf..cb9df93 100644
--- a/core/modules/aggregator/aggregator.admin.inc
+++ b/core/modules/aggregator/aggregator.admin.inc
@@ -142,7 +142,7 @@ function aggregator_form_feed($form, &$form_state, stdClass $feed = NULL) {
  * @see aggregator_form_feed_submit()
  */
 function aggregator_form_feed_validate($form, &$form_state) {
-  if ($form_state['values']['op'] == t('Save')) {
+  if ($form_state['values']['op'] === t('Save')) {
     // Check for duplicate titles.
     if (isset($form_state['values']['fid'])) {
       $result = db_query("SELECT title, url FROM {aggregator_feed} WHERE (title = :title OR url = :url) AND fid <> :fid", array(':title' => $form_state['values']['title'], ':url' => $form_state['values']['url'], ':fid' => $form_state['values']['fid']));
@@ -151,10 +151,10 @@ function aggregator_form_feed_validate($form, &$form_state) {
       $result = db_query("SELECT title, url FROM {aggregator_feed} WHERE title = :title OR url = :url", array(':title' => $form_state['values']['title'], ':url' => $form_state['values']['url']));
     }
     foreach ($result as $feed) {
-      if (strcasecmp($feed->title, $form_state['values']['title']) == 0) {
+      if (strcasecmp($feed->title, $form_state['values']['title']) === 0) {
         form_set_error('title', t('A feed named %feed already exists. Enter a unique title.', array('%feed' => $form_state['values']['title'])));
       }
-      if (strcasecmp($feed->url, $form_state['values']['url']) == 0) {
+      if (strcasecmp($feed->url, $form_state['values']['url']) === 0) {
         form_set_error('url', t('A feed with this URL %url already exists. Enter a unique URL.', array('%url' => $form_state['values']['url'])));
       }
     }
@@ -168,7 +168,7 @@ function aggregator_form_feed_validate($form, &$form_state) {
  * @todo Add delete confirmation dialog.
  */
 function aggregator_form_feed_submit($form, &$form_state) {
-  if ($form_state['values']['op'] == t('Delete')) {
+  if ($form_state['values']['op'] === t('Delete')) {
     $title = $form_state['values']['title'];
     // Unset the title.
     unset($form_state['values']['title']);
@@ -177,7 +177,7 @@ function aggregator_form_feed_submit($form, &$form_state) {
   if (isset($form_state['values']['fid'])) {
     if (isset($form_state['values']['title'])) {
       drupal_set_message(t('The feed %feed has been updated.', array('%feed' => $form_state['values']['title'])));
-      if (arg(0) == 'admin') {
+      if (arg(0) === 'admin') {
         $form_state['redirect'] = 'admin/config/services/aggregator/';
         return;
       }
@@ -189,7 +189,7 @@ function aggregator_form_feed_submit($form, &$form_state) {
     else {
       watchdog('aggregator', 'Feed %feed deleted.', array('%feed' => $title));
       drupal_set_message(t('The feed %feed has been deleted.', array('%feed' => $title)));
-      if (arg(0) == 'admin') {
+      if (arg(0) === 'admin') {
         $form_state['redirect'] = 'admin/config/services/aggregator/';
         return;
       }
@@ -302,7 +302,7 @@ function aggregator_form_opml($form, &$form_state) {
  */
 function aggregator_form_opml_validate($form, &$form_state) {
   // If both fields are empty or filled, cancel.
-  if (empty($form_state['values']['remote']) == empty($_FILES['files']['name']['upload'])) {
+  if (empty($form_state['values']['remote']) === empty($_FILES['files']['name']['upload'])) {
     form_set_error('remote', t('You must <em>either</em> upload a file or enter a URL.'));
   }
 }
@@ -343,11 +343,11 @@ function aggregator_form_opml_submit($form, &$form_state) {
     // Check for duplicate titles or URLs.
     $result = db_query("SELECT title, url FROM {aggregator_feed} WHERE title = :title OR url = :url", array(':title' => $feed['title'], ':url' => $feed['url']));
     foreach ($result as $old) {
-      if (strcasecmp($old->title, $feed['title']) == 0) {
+      if (strcasecmp($old->title, $feed['title']) === 0) {
         drupal_set_message(t('A feed named %title already exists.', array('%title' => $old->title)), 'warning');
         continue 2;
       }
-      if (strcasecmp($old->url, $feed['url']) == 0) {
+      if (strcasecmp($old->url, $feed['url']) === 0) {
         drupal_set_message(t('A feed with the URL %url already exists.', array('%url' => $old->url)), 'warning');
         continue 2;
       }
@@ -381,7 +381,7 @@ function _aggregator_parse_opml($opml) {
   $xml_parser = drupal_xml_parser_create($opml);
   if (xml_parse_into_struct($xml_parser, $opml, $values)) {
     foreach ($values as $entry) {
-      if ($entry['tag'] == 'OUTLINE' && isset($entry['attributes'])) {
+      if ($entry['tag'] === 'OUTLINE' && isset($entry['attributes'])) {
         $item = $entry['attributes'];
         if (!empty($item['XMLURL']) && !empty($item['TEXT'])) {
           $feeds[] = array('title' => $item['TEXT'], 'url' => $item['XMLURL']);
@@ -573,7 +573,7 @@ function aggregator_form_category($form, &$form_state, $edit = array('title' =>
  * @see aggregator_form_category_submit()
  */
 function aggregator_form_category_validate($form, &$form_state) {
-  if ($form_state['values']['op'] == t('Save')) {
+  if ($form_state['values']['op'] === t('Save')) {
     // Check for duplicate titles
     if (isset($form_state['values']['cid'])) {
       $category = db_query("SELECT cid FROM {aggregator_category} WHERE title = :title AND cid <> :cid", array(':title' => $form_state['values']['title'], ':cid' => $form_state['values']['cid']))->fetchObject();
@@ -594,7 +594,7 @@ function aggregator_form_category_validate($form, &$form_state) {
  * @todo Add delete confirmation dialog.
  */
 function aggregator_form_category_submit($form, &$form_state) {
-  if ($form_state['values']['op'] == t('Delete')) {
+  if ($form_state['values']['op'] === t('Delete')) {
     $title = $form_state['values']['title'];
     // Unset the title.
     unset($form_state['values']['title']);
@@ -603,7 +603,7 @@ function aggregator_form_category_submit($form, &$form_state) {
   if (isset($form_state['values']['cid'])) {
     if (isset($form_state['values']['title'])) {
       drupal_set_message(t('The category %category has been updated.', array('%category' => $form_state['values']['title'])));
-      if (arg(0) == 'admin') {
+      if (arg(0) === 'admin') {
         $form_state['redirect'] = 'admin/config/services/aggregator/';
         return;
       }
@@ -615,7 +615,7 @@ function aggregator_form_category_submit($form, &$form_state) {
     else {
       watchdog('aggregator', 'Category %category deleted.', array('%category' => $title));
       drupal_set_message(t('The category %category has been deleted.', array('%category' => $title)));
-      if (arg(0) == 'admin') {
+      if (arg(0) === 'admin') {
         $form_state['redirect'] = 'admin/config/services/aggregator/';
         return;
       }
diff --git a/core/modules/aggregator/aggregator.module b/core/modules/aggregator/aggregator.module
index 9a266ba..2b71870 100644
--- a/core/modules/aggregator/aggregator.module
+++ b/core/modules/aggregator/aggregator.module
@@ -362,7 +362,7 @@ function aggregator_block_info() {
  */
 function aggregator_block_configure($delta = '') {
   list($type, $id) = explode('-', $delta);
-  if ($type == 'category') {
+  if ($type === 'category') {
     $value = db_query('SELECT block FROM {aggregator_category} WHERE cid = :cid', array(':cid' => $id))->fetchField();
     $form['block'] = array(
       '#type' => 'select',
@@ -379,7 +379,7 @@ function aggregator_block_configure($delta = '') {
  */
 function aggregator_block_save($delta = '', $edit = array()) {
   list($type, $id) = explode('-', $delta);
-  if ($type == 'category') {
+  if ($type === 'category') {
     db_update('aggregator_category')
       ->fields(array('block' => $edit['block']))
       ->condition('cid', $id)
@@ -593,11 +593,11 @@ function aggregator_remove($feed) {
 function _aggregator_get_variables() {
   // Fetch the feed.
   $fetcher = variable_get('aggregator_fetcher', 'aggregator');
-  if ($fetcher == 'aggregator') {
+  if ($fetcher === 'aggregator') {
     include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.fetcher.inc';
   }
   $parser = variable_get('aggregator_parser', 'aggregator');
-  if ($parser == 'aggregator') {
+  if ($parser === 'aggregator') {
     include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.parser.inc';
   }
   $processors = variable_get('aggregator_processors', array('aggregator'));
@@ -789,7 +789,7 @@ function _aggregator_items($count) {
  * Implements hook_preprocess_block().
  */
 function aggregator_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'aggregator') {
+  if ($variables['block']->module === 'aggregator') {
     $variables['attributes_array']['role'] = 'complementary';
   }
 }
diff --git a/core/modules/aggregator/aggregator.pages.inc b/core/modules/aggregator/aggregator.pages.inc
index ebb561b..4bc5b23 100644
--- a/core/modules/aggregator/aggregator.pages.inc
+++ b/core/modules/aggregator/aggregator.pages.inc
@@ -165,7 +165,7 @@ function aggregator_load_feed_items($type, $data = NULL) {
  *   The rendered list of items for a feed.
  */
 function _aggregator_page_list($items, $op, $feed_source = '') {
-  if (user_access('administer news feeds') && ($op == 'categorize')) {
+  if (user_access('administer news feeds') && ($op === 'categorize')) {
     // Get form data.
     $output = aggregator_categorize_items($items, $feed_source);
   }
@@ -331,7 +331,7 @@ function template_preprocess_aggregator_item(&$variables) {
     $variables['source_url'] = url("aggregator/sources/$item->fid");
     $variables['source_title'] = check_plain($item->ftitle);
   }
-  if (date('Ymd', $item->timestamp) == date('Ymd')) {
+  if (date('Ymd', $item->timestamp) === date('Ymd')) {
     $variables['source_date'] = t('%ago ago', array('%ago' => format_interval(REQUEST_TIME - $item->timestamp)));
   }
   else {
diff --git a/core/modules/aggregator/aggregator.parser.inc b/core/modules/aggregator/aggregator.parser.inc
index 0f594d4..3daf3c6 100644
--- a/core/modules/aggregator/aggregator.parser.inc
+++ b/core/modules/aggregator/aggregator.parser.inc
@@ -192,8 +192,8 @@ function aggregator_element_start($parser, $name, $attributes) {
       // According to RFC 4287, link elements in Atom feeds without a 'rel'
       // attribute should be interpreted as though the relation type is
       // "alternate".
-      if (!empty($attributes['HREF']) && (empty($attributes['REL']) || $attributes['REL'] == 'alternate')) {
-        if ($element == 'item') {
+      if (!empty($attributes['HREF']) && (empty($attributes['REL']) || $attributes['REL'] === 'alternate')) {
+        if ($element === 'item') {
           $items[$item]['link'] = $attributes['HREF'];
         }
         else {
@@ -232,7 +232,7 @@ function aggregator_element_end($parser, $name) {
       break;
     case 'id':
     case 'content':
-      if ($element == $name) {
+      if ($element === $name) {
         $element = '';
       }
   }
@@ -316,7 +316,7 @@ function aggregator_parse_w3cdtf($date_str) {
       }
       $offset_secs = (($tz_hour * 60) + $tz_min) * 60;
       // Is timezone ahead of GMT?  If yes, subtract offset.
-      if ($tz_mod == '+') {
+      if ($tz_mod === '+') {
         $offset_secs *= -1;
       }
       $epoch += $offset_secs;
diff --git a/core/modules/aggregator/aggregator.processor.inc b/core/modules/aggregator/aggregator.processor.inc
index 7fa86a9..913d900 100644
--- a/core/modules/aggregator/aggregator.processor.inc
+++ b/core/modules/aggregator/aggregator.processor.inc
@@ -132,7 +132,7 @@ function aggregator_form_aggregator_admin_form_alter(&$form, $form_state) {
  * aggregator_form_aggregator_admin_form_alter().
  */
 function _aggregator_characters($length) {
-  return ($length == 0) ? t('Unlimited') : format_plural($length, '1 character', '@count characters');
+  return ($length === 0) ? t('Unlimited') : format_plural($length, '1 character', '@count characters');
 }
 
 /**
diff --git a/core/modules/aggregator/aggregator.test b/core/modules/aggregator/aggregator.test
index 61ad16b..a0a3eae 100644
--- a/core/modules/aggregator/aggregator.test
+++ b/core/modules/aggregator/aggregator.test
@@ -142,7 +142,7 @@ class AggregatorTestCase extends DrupalWebTestCase {
     $this->assertTrue($count);
     $this->removeFeedItems($feed);
     $count = db_query('SELECT COUNT(*) FROM {aggregator_item} WHERE fid = :fid', array(':fid' => $feed->fid))->fetchField();
-    $this->assertTrue($count == 0);
+    $this->assertTrue($count === 0);
   }
 
   /**
@@ -184,7 +184,7 @@ class AggregatorTestCase extends DrupalWebTestCase {
    */
   function uniqueFeed($feed_name, $feed_url) {
     $result = db_query("SELECT COUNT(*) FROM {aggregator_feed} WHERE title = :title AND url = :url", array(':title' => $feed_name, ':url' => $feed_url))->fetchField();
-    return (1 == $result);
+    return (1 === $result);
   }
 
   /**
@@ -766,8 +766,8 @@ class ImportOPMLTestCase extends AggregatorTestCase {
     foreach ($feeds_from_db as $feed) {
       $title[$feed->url] = $feed->title;
       $url[$feed->title] = $feed->url;
-      $category = $category && $feed->cid == 1;
-      $refresh = $refresh && $feed->refresh == 900;
+      $category = $category && $feed->cid === 1;
+      $refresh = $refresh && $feed->refresh === 900;
     }
 
     $this->assertEqual($title[$feeds[0]['url']], $feeds[0]['title'], t('First feed was added correctly.'));
diff --git a/core/modules/aggregator/tests/aggregator_test.module b/core/modules/aggregator/tests/aggregator_test.module
index 2d26a5d..468f9af 100644
--- a/core/modules/aggregator/tests/aggregator_test.module
+++ b/core/modules/aggregator/tests/aggregator_test.module
@@ -38,7 +38,7 @@ function aggregator_test_feed($use_last_modified = FALSE, $use_etag = FALSE) {
     drupal_add_http_header('ETag', $etag);
   }
   // Return 304 not modified if either last modified or etag match.
-  if ($last_modified == $if_modified_since || $etag == $if_none_match) {
+  if ($last_modified === $if_modified_since || $etag === $if_none_match) {
     drupal_add_http_header('Status', '304 Not Modified');
     return;
   }
diff --git a/core/modules/block/block-admin-display-form.tpl.php b/core/modules/block/block-admin-display-form.tpl.php
index 1728273..60f2661 100644
--- a/core/modules/block/block-admin-display-form.tpl.php
+++ b/core/modules/block/block-admin-display-form.tpl.php
@@ -44,7 +44,7 @@
         <td colspan="5"><em><?php print t('No blocks in this region'); ?></em></td>
       </tr>
       <?php foreach ($block_listing[$region] as $delta => $data): ?>
-      <tr class="draggable <?php print $row % 2 == 0 ? 'odd' : 'even'; ?><?php print $data->row_class ? ' ' . $data->row_class : ''; ?>">
+      <tr class="draggable <?php print $row % 2 === 0 ? 'odd' : 'even'; ?><?php print $data->row_class ? ' ' . $data->row_class : ''; ?>">
         <td class="block"><?php print $data->block_title; ?></td>
         <td><?php print $data->region_select; ?></td>
         <td><?php print $data->weight_select; ?></td>
diff --git a/core/modules/block/block.admin.inc b/core/modules/block/block.admin.inc
index 8a5553d..41f65d2 100644
--- a/core/modules/block/block.admin.inc
+++ b/core/modules/block/block.admin.inc
@@ -151,7 +151,7 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r
       '#title' => t('configure'),
       '#href' => 'admin/structure/block/manage/' . $block['module'] . '/' . $block['delta'] . '/configure',
     );
-    if ($block['module'] == 'block') {
+    if ($block['module'] === 'block') {
       $form['blocks'][$key]['delete'] = array(
         '#type' => 'link',
         '#title' => t('delete'),
@@ -286,7 +286,7 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
     '#type' => 'textfield',
     '#title' => t('Block title'),
     '#maxlength' => 64,
-    '#description' => $block->module == 'block' ? t('The title of the block as shown to the user.') : t('Override the default title for the block. Use <em>!placeholder</em> to display no title, or leave blank to use the default block title.', array('!placeholder' => '&lt;none&gt;')),
+    '#description' => $block->module === 'block' ? t('The title of the block as shown to the user.') : t('Override the default title for the block. Use <em>!placeholder</em> to display no title, or leave blank to use the default block title.', array('!placeholder' => '&lt;none&gt;')),
     '#default_value' => isset($block->title) ? $block->title : '',
     '#weight' => -19,
   );
@@ -321,10 +321,10 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
       // Use a meaningful title for the main site theme and administrative
       // theme.
       $theme_title = $theme->info['name'];
-      if ($key == $theme_default) {
+      if ($key === $theme_default) {
         $theme_title = t('!theme (default theme)', array('!theme' => $theme_title));
       }
-      elseif ($admin_theme && $key == $admin_theme) {
+      elseif ($admin_theme && $key === $admin_theme) {
         $theme_title = t('!theme (administration theme)', array('!theme' => $theme_title));
       }
       $form['regions'][$key] = array(
@@ -333,7 +333,7 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
         '#default_value' => !empty($region) && $region != -1 ? $region : NULL,
         '#empty_value' => BLOCK_REGION_NONE,
         '#options' => system_region_list($key, REGIONS_VISIBLE),
-        '#weight' => ($key == $theme_default ? 9 : 10),
+        '#weight' => ($key === $theme_default ? 9 : 10),
       );
     }
   }
@@ -361,7 +361,7 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
   );
 
   $access = user_access('use PHP for settings');
-  if (isset($block->visibility) && $block->visibility == BLOCK_VISIBILITY_PHP && !$access) {
+  if (isset($block->visibility) && $block->visibility === BLOCK_VISIBILITY_PHP && !$access) {
     $form['visibility']['path']['visibility'] = array(
       '#type' => 'value',
       '#value' => BLOCK_VISIBILITY_PHP,
@@ -459,7 +459,7 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
  * @see block_admin_configure_submit()
  */
 function block_admin_configure_validate($form, &$form_state) {
-  if ($form_state['values']['module'] == 'block') {
+  if ($form_state['values']['module'] === 'block') {
     $custom_block_exists = (bool) db_query_range('SELECT 1 FROM {block_custom} WHERE bid <> :bid AND info = :info', 0, 1, array(
       ':bid' => $form_state['values']['delta'],
       ':info' => $form_state['values']['info'],
@@ -510,7 +510,7 @@ function block_admin_configure_submit($form, &$form_state) {
         db_merge('block')
           ->key(array('theme' => $theme, 'delta' => $form_state['values']['delta'], 'module' => $form_state['values']['module']))
           ->fields(array(
-            'region' => ($region == BLOCK_REGION_NONE ? '' : $region),
+            'region' => ($region === BLOCK_REGION_NONE ? '' : $region),
             'pages' => trim($form_state['values']['pages']),
             'status' => (int) ($region != BLOCK_REGION_NONE),
           ))
@@ -609,7 +609,7 @@ function block_add_block_form_submit($form, &$form_state) {
     db_merge('block')
       ->key(array('theme' => $theme, 'delta' => $delta, 'module' => $form_state['values']['module']))
       ->fields(array(
-        'region' => ($region == BLOCK_REGION_NONE ? '' : $region),
+        'region' => ($region === BLOCK_REGION_NONE ? '' : $region),
         'pages' => trim($form_state['values']['pages']),
         'status' => (int) ($region != BLOCK_REGION_NONE),
       ))
diff --git a/core/modules/block/block.api.php b/core/modules/block/block.api.php
index a3d59b0..82c327c 100644
--- a/core/modules/block/block.api.php
+++ b/core/modules/block/block.api.php
@@ -158,7 +158,7 @@ function hook_block_info_alter(&$blocks, $theme, $code_blocks) {
 function hook_block_configure($delta = '') {
   // This example comes from node.module.
   $form = array();
-  if ($delta == 'recent') {
+  if ($delta === 'recent') {
     $form['node_recent_block_count'] = array(
       '#type' => 'select',
       '#title' => t('Number of recent content items to display'),
@@ -188,7 +188,7 @@ function hook_block_configure($delta = '') {
  */
 function hook_block_save($delta = '', $edit = array()) {
   // This example comes from node.module.
-  if ($delta == 'recent') {
+  if ($delta === 'recent') {
     variable_set('node_recent_block_count', $edit['node_recent_block_count']);
   }
 }
@@ -276,7 +276,7 @@ function hook_block_view_alter(&$data, $block) {
   }
   // Add a theme wrapper function defined by the current module to all blocks
   // provided by the "somemodule" module.
-  if (is_array($data['content']) && $block->module == 'somemodule') {
+  if (is_array($data['content']) && $block->module === 'somemodule') {
     $data['content']['#theme_wrappers'][] = 'mymodule_special_block';
   }
 }
diff --git a/core/modules/block/block.js b/core/modules/block/block.js
index 7dd3c9b..412632a 100644
--- a/core/modules/block/block.js
+++ b/core/modules/block/block.js
@@ -8,7 +8,7 @@ Drupal.behaviors.blockSettingsSummary = {
     // The drupalSetSummary method required for this behavior is not available
     // on the Blocks administration page, so we need to make sure this
     // behavior is processed only if drupalSetSummary is defined.
-    if (typeof jQuery.fn.drupalSetSummary == 'undefined') {
+    if (typeof jQuery.fn.drupalSetSummary === 'undefined') {
       return;
     }
 
@@ -46,7 +46,7 @@ Drupal.behaviors.blockSettingsSummary = {
 
     $context.find('fieldset#edit-user').drupalSetSummary(function (context) {
       var $radio = $(context).find('input[name="custom"]:checked');
-      if ($radio.val() == 0) {
+      if ($radio.val() === 0) {
         return Drupal.t('Not customizable');
       }
       else {
@@ -65,7 +65,7 @@ Drupal.behaviors.blockSettingsSummary = {
 Drupal.behaviors.blockDrag = {
   attach: function (context, settings) {
     // tableDrag is required and we should be on the blocks admin page.
-    if (typeof Drupal.tableDrag == 'undefined' || typeof Drupal.tableDrag.blocks == 'undefined') {
+    if (typeof Drupal.tableDrag === 'undefined' || typeof Drupal.tableDrag.blocks === 'undefined') {
       return;
     }
 
@@ -92,7 +92,7 @@ Drupal.behaviors.blockDrag = {
       var regionName = regionRow.className.replace(/([^ ]+[ ]+)*region-([^ ]+)-message([ ]+[^ ]+)*/, '$2');
       var regionField = $rowElement.find('select.block-region-select');
       // Check whether the newly picked region is available for this block.
-      if (regionField.find('option[value=' + regionName + ']').length == 0) {
+      if (regionField.find('option[value=' + regionName + ']').length === 0) {
         // If not, alert the user and keep the block in its old region setting.
         alert(Drupal.t('The block cannot be placed in this region.'));
         // Simulate that there was a selected element change, so the row is put
@@ -149,14 +149,14 @@ Drupal.behaviors.blockDrag = {
       table.find('tr.region-message').each(function () {
         var $this = $(this);
         // If the dragged row is in this region, but above the message row, swap it down one space.
-        if ($this.prev('tr').get(0) == rowObject.element) {
+        if ($this.prev('tr').get(0) === rowObject.element) {
           // Prevent a recursion problem when using the keyboard to move rows up.
-          if ((rowObject.method != 'keyboard' || rowObject.direction == 'down')) {
+          if ((rowObject.method != 'keyboard' || rowObject.direction === 'down')) {
             rowObject.swap('after', this);
           }
         }
         // This region has become empty.
-        if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length == 0) {
+        if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length === 0) {
           $this.removeClass('region-populated').addClass('region-empty');
         }
         // This region has become populated.
diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 25bd3b1..b915a1e 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -62,7 +62,7 @@ function block_help($path, $arg) {
     case 'admin/structure/block/add':
       return '<p>' . t('Use this page to create a new custom block.') . '</p>';
   }
-  if ($arg[0] == 'admin' && $arg[1] == 'structure' && $arg['2'] == 'block' && (empty($arg[3]) || $arg[3] == 'list')) {
+  if ($arg[0] === 'admin' && $arg[1] === 'structure' && $arg['2'] === 'block' && (empty($arg[3]) || $arg[3] === 'list')) {
     $demo_theme = !empty($arg[4]) ? $arg[4] : variable_get('theme_default', 'stark');
     $themes = list_themes();
     $output = '<p>' . t('This page provides a drag-and-drop interface for assigning a block to a region, and for controlling the order of blocks within regions. Since not all themes implement the same regions, or display regions in the same way, blocks are positioned on a per-theme basis. Remember that your changes will not be saved until you click the <em>Save blocks</em> button at the bottom of the page. Click the <em>configure</em> link next to each block to configure its specific title and visibility settings.') . '</p>';
@@ -145,8 +145,8 @@ function block_menu() {
     $items['admin/structure/block/list/' . $key] = array(
       'title' => check_plain($theme->info['name']),
       'page arguments' => array($key),
-      'type' => $key == $default_theme ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
-      'weight' => $key == $default_theme ? -10 : 0,
+      'type' => $key === $default_theme ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
+      'weight' => $key === $default_theme ? -10 : 0,
       'access callback' => '_block_themes_access',
       'access arguments' => array($key),
       'file' => 'block.admin.inc',
@@ -294,7 +294,7 @@ function block_page_build(&$page) {
   else {
     // Append region description if we are rendering the regions demo page.
     $item = menu_get_item();
-    if ($item['path'] == 'admin/structure/block/demo/' . $theme) {
+    if ($item['path'] === 'admin/structure/block/demo/' . $theme) {
       $visible_regions = array_keys(system_region_list($theme, REGIONS_VISIBLE));
       foreach ($visible_regions as $region) {
         $description = '<div class="block-region">' . $all_regions[$region] . '</div>';
@@ -306,7 +306,7 @@ function block_page_build(&$page) {
       $page['page_top']['backlink'] = array(
         '#type' => 'link',
         '#title' => t('Exit block region demonstration'),
-        '#href' => 'admin/structure/block' . (variable_get('theme_default', 'stark') == $theme ? '' : '/list/' . $theme),
+        '#href' => 'admin/structure/block' . (variable_get('theme_default', 'stark') === $theme ? '' : '/list/' . $theme),
         // Add the "overlay-restore" class to indicate this link should restore
         // the context in which the region demonstration page was opened.
         '#options' => array('attributes' => array('class' => array('block-demo-backlink', 'overlay-restore'))),
@@ -351,7 +351,7 @@ function _block_get_renderable_region($list = array()) {
   // the regular 'roles define permissions' schema, it brings too many
   // chances of having unwanted output get in the cache and later be served
   // to other users. We therefore exclude user 1 from block caching.
-  $not_cacheable = $GLOBALS['user']->uid == 1 ||
+  $not_cacheable = $GLOBALS['user']->uid === 1 ||
     count(module_implements('node_grants')) ||
     !in_array($_SERVER['REQUEST_METHOD'], array('GET', 'HEAD'));
 
@@ -607,7 +607,7 @@ function block_form_user_profile_form_alter(&$form, &$form_state) {
       $blocks[$block->module][$block->delta] = array(
         '#type' => 'checkbox',
         '#title' => check_plain($data[$block->delta]['info']),
-        '#default_value' => isset($account->data['block'][$block->module][$block->delta]) ? $account->data['block'][$block->module][$block->delta] : ($block->custom == 1),
+        '#default_value' => isset($account->data['block'][$block->module][$block->delta]) ? $account->data['block'][$block->module][$block->delta] : ($block->custom === 1),
       );
     }
   }
@@ -806,7 +806,7 @@ function block_block_list_alter(&$blocks) {
         $enabled = $user->data['block'][$block->module][$block->delta];
       }
       else {
-        $enabled = ($block->custom == BLOCK_CUSTOM_ENABLED);
+        $enabled = ($block->custom === BLOCK_CUSTOM_ENABLED);
       }
     }
     else {
@@ -814,7 +814,7 @@ function block_block_list_alter(&$blocks) {
     }
 
     // Limited visibility blocks must list at least one page.
-    if ($block->visibility == BLOCK_VISIBILITY_LISTED && empty($block->pages)) {
+    if ($block->visibility === BLOCK_VISIBILITY_LISTED && empty($block->pages)) {
       $enabled = FALSE;
     }
 
@@ -903,7 +903,7 @@ function _block_get_renderable_block($element) {
     if ($block->title) {
       // Check plain here to allow module generated titles to keep any
       // markup.
-      $block->subject = $block->title == '<none>' ? '' : check_plain($block->title);
+      $block->subject = $block->title === '<none>' ? '' : check_plain($block->title);
     }
 
     // Add the content renderable array to the main element.
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index a29a331..0103fa7 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -95,9 +95,9 @@ function book_node_view_link($node, $view_mode) {
   $links = array();
 
   if (isset($node->book['depth'])) {
-    if ($view_mode == 'full' && node_is_page($node)) {
+    if ($view_mode === 'full' && node_is_page($node)) {
       $child_type = variable_get('book_child_type', 'book');
-      if ((user_access('add content to books') || user_access('administer book outlines')) && node_access('create', $child_type) && $node->status == 1 && $node->book['depth'] < MENU_MAX_DEPTH) {
+      if ((user_access('add content to books') || user_access('administer book outlines')) && node_access('create', $child_type) && $node->status === 1 && $node->book['depth'] < MENU_MAX_DEPTH) {
         $links['book_add_child'] = array(
           'title' => t('Add child page'),
           'href' => 'node/add/' . str_replace('_', '-', $child_type),
@@ -282,12 +282,12 @@ function book_block_view($delta = '') {
     $current_bid = empty($node->book['bid']) ? 0 : $node->book['bid'];
   }
 
-  if (variable_get('book_block_mode', 'all pages') == 'all pages') {
+  if (variable_get('book_block_mode', 'all pages') === 'all pages') {
     $block['subject'] = t('Book navigation');
     $book_menus = array();
     $pseudo_tree = array(0 => array('below' => FALSE));
     foreach (book_get_books() as $book_id => $book) {
-      if ($book['bid'] == $current_bid) {
+      if ($book['bid'] === $current_bid) {
         // If the current page is a node associated with a book, the menu
         // needs to be retrieved.
         $book_menus[$book_id] = menu_tree_output(menu_tree_all_data($node->book['menu_name'], $node->book));
@@ -567,7 +567,7 @@ function _book_add_form_elements(&$form, &$form_state, $node) {
   $options = array();
   $nid = isset($node->nid) ? $node->nid : 'new';
 
-  if (isset($node->nid) && ($nid == $node->book['original_bid']) && ($node->book['parent_depth_limit'] == 0)) {
+  if (isset($node->nid) && ($nid === $node->book['original_bid']) && ($node->book['parent_depth_limit'] === 0)) {
     // This is the top level node in a maximum depth book and thus cannot be moved.
     $options[$node->nid] = $node->title;
   }
@@ -577,7 +577,7 @@ function _book_add_form_elements(&$form, &$form_state, $node) {
     }
   }
 
-  if (user_access('create new books') && ($nid == 'new' || ($nid != $node->book['original_bid']))) {
+  if (user_access('create new books') && ($nid === 'new' || ($nid != $node->book['original_bid']))) {
     // The node can become a new book, if it is not one already.
     $options = array($nid => '<' . t('create a new book') . '>') + $options;
   }
@@ -641,7 +641,7 @@ function _book_update_outline($node) {
   $node->book['link_title'] = $node->title;
   $node->book['parent_mismatch'] = FALSE; // The normal case.
 
-  if ($node->book['bid'] == $node->nid) {
+  if ($node->book['bid'] === $node->nid) {
     $node->book['plid'] = 0;
     $node->book['menu_name'] = book_menu_name($node->nid);
   }
@@ -772,7 +772,7 @@ function _book_flatten_menu($tree, &$flat) {
  */
 function book_prev($book_link) {
   // If the parent is zero, we are at the start of a book.
-  if ($book_link['plid'] == 0) {
+  if ($book_link['plid'] === 0) {
     return NULL;
   }
   $flat = book_get_flat_menu($book_link);
@@ -783,9 +783,9 @@ function book_prev($book_link) {
     list($key, $curr) = each($flat);
   } while ($key && $key != $book_link['mlid']);
 
-  if ($key == $book_link['mlid']) {
+  if ($key === $book_link['mlid']) {
     // The previous page in the book may be a child of the previous visible link.
-    if ($prev['depth'] == $book_link['depth'] && $prev['has_children']) {
+    if ($prev['depth'] === $book_link['depth'] && $prev['has_children']) {
       // The subtree will have only one link at the top level - get its data.
       $tree = book_menu_subtree_data($prev);
       $data = array_shift($tree);
@@ -820,7 +820,7 @@ function book_next($book_link) {
   }
   while ($key && $key != $book_link['mlid']);
 
-  if ($key == $book_link['mlid']) {
+  if ($key === $book_link['mlid']) {
     return current($flat);
   }
 }
@@ -846,7 +846,7 @@ function book_children($book_link) {
     }
     while ($link && ($link['mlid'] != $book_link['mlid']));
     // Continue though the array and collect the links whose parent is this page.
-    while (($link = array_shift($flat)) && $link['plid'] == $book_link['mlid']) {
+    while (($link = array_shift($flat)) && $link['plid'] === $book_link['mlid']) {
       $data['link'] = $link;
       $data['below'] = '';
       $children[] = $data;
@@ -890,7 +890,7 @@ function book_node_load($nodes, $types) {
  * Implements hook_node_view().
  */
 function book_node_view($node, $view_mode) {
-  if ($view_mode == 'full') {
+  if ($view_mode === 'full') {
     if (!empty($node->book['bid']) && empty($node->in_preview)) {
       $node->content['book_navigation'] = array(
         '#markup' => theme('book_navigation', array('book_link' => $node->book)),
@@ -941,7 +941,7 @@ function book_node_presave($node) {
  */
 function book_node_insert($node) {
   if (!empty($node->book['bid'])) {
-    if ($node->book['bid'] == 'new') {
+    if ($node->book['bid'] === 'new') {
       // New nodes that are their own book.
       $node->book['bid'] = $node->nid;
     }
@@ -956,7 +956,7 @@ function book_node_insert($node) {
  */
 function book_node_update($node) {
   if (!empty($node->book['bid'])) {
-    if ($node->book['bid'] == 'new') {
+    if ($node->book['bid'] === 'new') {
       // New nodes that are their own book.
       $node->book['bid'] = $node->nid;
     }
@@ -971,7 +971,7 @@ function book_node_update($node) {
  */
 function book_node_predelete($node) {
   if (!empty($node->book['bid'])) {
-    if ($node->nid == $node->book['bid']) {
+    if ($node->nid === $node->book['bid']) {
       // Handle deletion of a top-level post.
       $result = db_query("SELECT b.nid FROM {menu_links} ml INNER JOIN {book} b on b.mlid = ml.mlid WHERE ml.plid = :plid", array(
         ':plid' => $node->book['mlid']
@@ -1070,7 +1070,7 @@ function _book_link_defaults($nid) {
  * Implements hook_preprocess_block().
  */
 function book_preprocess_block(&$variables) {
-  if ($variables['block']-> module == 'book') {
+  if ($variables['block']-> module === 'book') {
     $variables['attributes_array']['role'] = 'navigation';
   }
 }
@@ -1231,7 +1231,7 @@ function template_preprocess_book_export_html(&$variables) {
   $variables['title'] = check_plain($variables['title']);
   $variables['base_url'] = $base_url;
   $variables['language'] = $language_interface;
-  $variables['language_rtl'] = ($language_interface->direction == LANGUAGE_RTL);
+  $variables['language_rtl'] = ($language_interface->direction === LANGUAGE_RTL);
   $variables['head'] = drupal_get_html_head();
 
   // HTML element attributes.
@@ -1351,7 +1351,7 @@ function book_node_type_update($type) {
     }
 
     // Update the setting for the "Add child page" link.
-    if (variable_get('book_child_type', 'book') == $type->old_type) {
+    if (variable_get('book_child_type', 'book') === $type->old_type) {
       variable_set('book_child_type', $type->type);
     }
   }
diff --git a/core/modules/color/color.install b/core/modules/color/color.install
index a1879f9..b4a5324 100644
--- a/core/modules/color/color.install
+++ b/core/modules/color/color.install
@@ -11,7 +11,7 @@
 function color_requirements($phase) {
   $requirements = array();
 
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     // Check for the PHP GD library.
     if (function_exists('imagegd2')) {
       $info = gd_info();
diff --git a/core/modules/color/color.js b/core/modules/color/color.js
index 6ed789a..926d645 100644
--- a/core/modules/color/color.js
+++ b/core/modules/color/color.js
@@ -10,7 +10,7 @@ Drupal.behaviors.color = {
     var i, j, colors, field_name;
     // This behavior attaches by ID, so is only valid once on a page.
     var form = $(context).find('#system-theme-settings .color-form').once('color');
-    if (form.length == 0) {
+    if (form.length === 0) {
       return;
     }
     var inputs = [];
@@ -43,7 +43,7 @@ Drupal.behaviors.color = {
       // Add rows (or columns for horizontal gradients).
       // Each gradient line should have a height (or width for horizontal
       // gradients) of 10px (because we divided the height/width by 10 above).
-      for (j = 0; j < (settings.gradients[i]['direction'] == 'vertical' ? height[i] : width[i]); ++j) {
+      for (j = 0; j < (settings.gradients[i]['direction'] === 'vertical' ? height[i] : width[i]); ++j) {
         gradient.append('<div class="gradient-line"></div>');
       }
     }
@@ -74,8 +74,8 @@ Drupal.behaviors.color = {
      * This algorithm ensures relative ordering on the saturation and luminance
      * axes is preserved, and performs a simple hue shift.
      *
-     * It is also symmetrical. If: shift_color(c, a, b) == d, then
-     * shift_color(d, b, a) == c.
+     * It is also symmetrical. If: shift_color(c, a, b) === d, then
+     * shift_color(d, b, a) === c.
      */
     function shift_color(given, ref1, ref2) {
       // Convert to HSL.
@@ -85,7 +85,7 @@ Drupal.behaviors.color = {
       given[0] += ref2[0] - ref1[0];
 
       // Saturation: interpolate.
-      if (ref1[1] == 0 || ref2[1] == 0) {
+      if (ref1[1] === 0 || ref2[1] === 0) {
         given[1] = ref2[1];
       }
       else {
@@ -99,7 +99,7 @@ Drupal.behaviors.color = {
       }
 
       // Luminance: interpolate.
-      if (ref1[2] == 0 || ref2[2] == 0) {
+      if (ref1[2] === 0 || ref2[2] === 0) {
         given[2] = ref2[2];
       }
       else {
diff --git a/core/modules/color/color.module b/core/modules/color/color.module
index b22a282..ff17c1e 100644
--- a/core/modules/color/color.module
+++ b/core/modules/color/color.module
@@ -74,7 +74,7 @@ function _color_html_alter(&$vars) {
       foreach ($color_paths as $color_path) {
         // Color module currently requires unique file names to be used,
         // which allows us to compare different file paths.
-        if (drupal_basename($old_path) == drupal_basename($color_path)) {
+        if (drupal_basename($old_path) === drupal_basename($color_path)) {
           // Replace the path to the new css file.
           // This keeps the order of the stylesheets intact.
           $vars['css'][$old_path]['data'] = $color_path;
@@ -163,7 +163,7 @@ function color_scheme_form($complete_form, &$form_state, $theme) {
   // Note: we use the original theme when the default scheme is chosen.
   $current_scheme = variable_get('color_' . $theme . '_palette', array());
   foreach ($schemes as $key => $scheme) {
-    if ($current_scheme == $scheme) {
+    if ($current_scheme === $scheme) {
       $scheme_name = $key;
       break;
     }
@@ -340,7 +340,7 @@ function color_scheme_form_submit($form, &$form_state) {
   }
 
   // Don't render the default colorscheme, use the standard theme instead.
-  if (implode(',', color_get_palette($theme, TRUE)) == implode(',', $palette)) {
+  if (implode(',', color_get_palette($theme, TRUE)) === implode(',', $palette)) {
     variable_del('color_' . $theme . '_palette');
     variable_del('color_' . $theme . '_stylesheets');
     variable_del('color_' . $theme . '_logo');
@@ -524,7 +524,7 @@ function _color_render_images($theme, &$info, &$paths, $palette) {
   // Render gradients.
   foreach ($info['gradients'] as $gradient) {
     // Get direction of the gradient.
-    if (isset($gradient['direction']) && $gradient['direction'] == 'horizontal') {
+    if (isset($gradient['direction']) && $gradient['direction'] === 'horizontal') {
       // Horizontal gradient.
       for ($x = 0; $x < $gradient['dimension'][2]; $x++) {
         $color = _color_blend($target, $palette[$gradient['colors'][0]], $palette[$gradient['colors'][1]], $x / ($gradient['dimension'][2] - 1));
@@ -553,7 +553,7 @@ function _color_render_images($theme, &$info, &$paths, $palette) {
     $image = drupal_realpath($paths['target'] . $base);
 
     // Cut out slice.
-    if ($file == 'screenshot.png') {
+    if ($file === 'screenshot.png') {
       $slice = imagecreatetruecolor(150, 90);
       imagecopyresampled($slice, $target, 0, 0, $x, $y, 150, 90, $width, $height);
       variable_set('color_' . $theme . '_screenshot', $image);
@@ -585,8 +585,8 @@ function _color_render_images($theme, &$info, &$paths, $palette) {
  * Note: this function is significantly different from the JS version, as it
  * is written to match the blended images perfectly.
  *
- * Constraint: if (ref2 == target + (ref1 - target) * delta) for some fraction
- * delta then (return == target + (given - target) * delta).
+ * Constraint: if (ref2 === target + (ref1 - target) * delta) for some fraction
+ * delta then (return === target + (given - target) * delta).
  *
  * Loose constraint: Preserve relative positions in saturation and luminance
  * space.
@@ -664,7 +664,7 @@ function _color_blend($img, $hex1, $hex2, $alpha) {
  * Converts a hex color into an RGB triplet.
  */
 function _color_unpack($hex, $normalize = FALSE) {
-  if (strlen($hex) == 4) {
+  if (strlen($hex) === 4) {
     $hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
   }
   $c = hexdec($hex);
@@ -735,9 +735,9 @@ function _color_rgb2hsl($rgb) {
 
   $h = 0;
   if ($delta > 0) {
-    if ($max == $r && $max != $g) $h += ($g - $b) / $delta;
-    if ($max == $g && $max != $b) $h += (2 + ($b - $r) / $delta);
-    if ($max == $b && $max != $r) $h += (4 + ($r - $g) / $delta);
+    if ($max === $r && $max != $g) $h += ($g - $b) / $delta;
+    if ($max === $g && $max != $b) $h += (2 + ($b - $r) / $delta);
+    if ($max === $b && $max != $r) $h += (4 + ($r - $g) / $delta);
     $h /= 6;
   }
 
diff --git a/core/modules/comment/comment.admin.inc b/core/modules/comment/comment.admin.inc
index d84b785..5701686 100644
--- a/core/modules/comment/comment.admin.inc
+++ b/core/modules/comment/comment.admin.inc
@@ -18,7 +18,7 @@
 function comment_admin($type = 'new') {
   $edit = $_POST;
 
-  if (isset($edit['operation']) && ($edit['operation'] == 'delete') && isset($edit['comments']) && $edit['comments']) {
+  if (isset($edit['operation']) && ($edit['operation'] === 'delete') && isset($edit['comments']) && $edit['comments']) {
     return drupal_get_form('comment_multiple_delete_confirm');
   }
   else {
@@ -46,7 +46,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
     '#attributes' => array('class' => array('container-inline')),
   );
 
-  if ($arg == 'approval') {
+  if ($arg === 'approval') {
     $options['publish'] = t('Publish the selected comments');
   }
   else {
@@ -67,7 +67,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
   );
 
   // Load the comments that need to be displayed.
-  $status = ($arg == 'approval') ? COMMENT_NOT_PUBLISHED : COMMENT_PUBLISHED;
+  $status = ($arg === 'approval') ? COMMENT_NOT_PUBLISHED : COMMENT_PUBLISHED;
   $header = array(
     'subject' => array('data' => t('Subject'), 'field' => 'subject'),
     'author' => array('data' => t('Author'), 'field' => 'name'),
@@ -154,7 +154,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
 function comment_admin_overview_validate($form, &$form_state) {
   $form_state['values']['comments'] = array_diff($form_state['values']['comments'], array(0));
   // We can't execute any 'Update options' if no comments were selected.
-  if (count($form_state['values']['comments']) == 0) {
+  if (count($form_state['values']['comments']) === 0) {
     form_set_error('', t('Select one or more comments to perform the update on.'));
   }
 }
@@ -171,17 +171,17 @@ function comment_admin_overview_submit($form, &$form_state) {
   $operation = $form_state['values']['operation'];
   $cids = $form_state['values']['comments'];
 
-  if ($operation == 'delete') {
+  if ($operation === 'delete') {
     comment_delete_multiple($cids);
   }
   else {
     foreach ($cids as $cid => $value) {
       $comment = comment_load($value);
 
-      if ($operation == 'unpublish') {
+      if ($operation === 'unpublish') {
         $comment->status = COMMENT_NOT_PUBLISHED;
       }
-      elseif ($operation == 'publish') {
+      elseif ($operation === 'publish') {
         $comment->status = COMMENT_PUBLISHED;
       }
       comment_save($comment);
diff --git a/core/modules/comment/comment.api.php b/core/modules/comment/comment.api.php
index eb9f34d..79a3119 100644
--- a/core/modules/comment/comment.api.php
+++ b/core/modules/comment/comment.api.php
@@ -96,7 +96,7 @@ function hook_comment_view(Comment $comment, $view_mode, $langcode) {
  */
 function hook_comment_view_alter(&$build) {
   // Check for the existence of a field added by another module.
-  if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
+  if ($build['#view_mode'] === 'full' && isset($build['an_additional_field'])) {
     // Change its weight.
     $build['an_additional_field']['#weight'] = -10;
   }
diff --git a/core/modules/comment/comment.entity.inc b/core/modules/comment/comment.entity.inc
index cb4d6d6..45919d3 100644
--- a/core/modules/comment/comment.entity.inc
+++ b/core/modules/comment/comment.entity.inc
@@ -148,7 +148,7 @@ class CommentStorageController extends EntityDatabaseStorageController {
         // Allow calling code to set thread itself.
         $thread = $comment->thread;
       }
-      elseif ($comment->pid == 0) {
+      elseif ($comment->pid === 0) {
         // This is a comment with no parent comment (depth 0): we start
         // by retrieving the maximum thread level.
         $max = db_query('SELECT MAX(thread) FROM {comment} WHERE nid = :nid', array(':nid' => $comment->nid))->fetchField();
@@ -174,7 +174,7 @@ class CommentStorageController extends EntityDatabaseStorageController {
           ':nid' => $comment->nid,
         ))->fetchField();
 
-        if ($max == '') {
+        if ($max === '') {
           // First child of this parent.
           $thread = $parent->thread . '.' . comment_int_to_alphadecimal(0) . '/';
         }
@@ -212,7 +212,7 @@ class CommentStorageController extends EntityDatabaseStorageController {
   protected function postSave(EntityInterface $comment, $update) {
     // Update the {node_comment_statistics} table prior to executing the hook.
     $this->updateNodeStatistics($comment->nid);
-    if ($comment->status == COMMENT_PUBLISHED) {
+    if ($comment->status === COMMENT_PUBLISHED) {
       module_invoke_all('comment_publish', $comment);
     }
   }
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index a714419..c0afd4f 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -178,7 +178,7 @@ function comment_field_extra_fields() {
   $return = array();
 
   foreach (node_type_get_types() as $type) {
-    if (variable_get('comment_subject_field_' . $type->type, 1) == 1) {
+    if (variable_get('comment_subject_field_' . $type->type, 1) === 1) {
       $return['comment']['comment_node_' . $type->type] = array(
         'form' => array(
           'author' => array(
@@ -555,7 +555,7 @@ function comment_new_page_count($num_comments, $new_replies, $node) {
   $mode = variable_get('comment_default_mode_' . $node->type, COMMENT_MODE_THREADED);
   $comments_per_page = variable_get('comment_default_per_page_' . $node->type, 50);
   $pagenum = NULL;
-  $flat = $mode == COMMENT_MODE_FLAT ? TRUE : FALSE;
+  $flat = $mode === COMMENT_MODE_FLAT ? TRUE : FALSE;
   if ($num_comments <= $comments_per_page) {
     // Only one page of comments.
     $pageno = 0;
@@ -633,14 +633,14 @@ function comment_node_view($node, $view_mode) {
   $links = array();
 
   if ($node->comment != COMMENT_NODE_HIDDEN) {
-    if ($view_mode == 'rss') {
+    if ($view_mode === 'rss') {
       // Add a comments RSS element which is a URL to the comments of this node.
       $node->rss_elements[] = array(
         'key' => 'comments',
         'value' => url('node/' . $node->nid, array('fragment' => 'comments', 'absolute' => TRUE))
       );
     }
-    elseif ($view_mode == 'teaser') {
+    elseif ($view_mode === 'teaser') {
       // Teaser view: display the number of comments that have been posted,
       // or a link to add new comments if the user has permission, the node
       // is open to new comments, and there currently are none.
@@ -666,7 +666,7 @@ function comment_node_view($node, $view_mode) {
           }
         }
       }
-      if ($node->comment == COMMENT_NODE_OPEN) {
+      if ($node->comment === COMMENT_NODE_OPEN) {
         $comment_form_location = variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW);
         if (user_access('post comments')) {
           $links['comment-add'] = array(
@@ -675,7 +675,7 @@ function comment_node_view($node, $view_mode) {
             'attributes' => array('title' => t('Add a new comment to this page.')),
             'fragment' => 'comment-form',
           );
-          if ($comment_form_location == COMMENT_FORM_SEPARATE_PAGE) {
+          if ($comment_form_location === COMMENT_FORM_SEPARATE_PAGE) {
             $links['comment-add']['href'] = "comment/reply/$node->nid";
           }
         }
@@ -692,19 +692,19 @@ function comment_node_view($node, $view_mode) {
       // allowed to post comments and if this node is allowing new comments.
       // But we don't want this link if we're building the node for search
       // indexing or constructing a search result excerpt.
-      if ($node->comment == COMMENT_NODE_OPEN) {
+      if ($node->comment === COMMENT_NODE_OPEN) {
         $comment_form_location = variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW);
         if (user_access('post comments')) {
           // Show the "post comment" link if the form is on another page, or
           // if there are existing comments that the link will skip past.
-          if ($comment_form_location == COMMENT_FORM_SEPARATE_PAGE || (!empty($node->comment_count) && user_access('access comments'))) {
+          if ($comment_form_location === COMMENT_FORM_SEPARATE_PAGE || (!empty($node->comment_count) && user_access('access comments'))) {
             $links['comment-add'] = array(
               'title' => t('Add new comment'),
               'attributes' => array('title' => t('Share your thoughts and opinions related to this posting.')),
               'href' => "node/$node->nid",
               'fragment' => 'comment-form',
             );
-            if ($comment_form_location == COMMENT_FORM_SEPARATE_PAGE) {
+            if ($comment_form_location === COMMENT_FORM_SEPARATE_PAGE) {
               $links['comment-add']['href'] = "comment/reply/$node->nid";
             }
           }
@@ -728,7 +728,7 @@ function comment_node_view($node, $view_mode) {
     // page. We compare $node and $page_node to ensure that comments are not
     // appended to other nodes shown on the page, for example a node_reference
     // displayed in 'full' view mode within another node.
-    if ($node->comment && $view_mode == 'full' && node_is_page($node) && empty($node->in_preview)) {
+    if ($node->comment && $view_mode === 'full' && node_is_page($node) && empty($node->in_preview)) {
       $node->content['comments'] = comment_node_page_additions($node);
     }
   }
@@ -763,7 +763,7 @@ function comment_node_page_additions($node) {
   }
 
   // Append comment form if needed.
-  if (user_access('post comments') && $node->comment == COMMENT_NODE_OPEN && (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW) == COMMENT_FORM_BELOW)) {
+  if (user_access('post comments') && $node->comment === COMMENT_NODE_OPEN && (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW) === COMMENT_FORM_BELOW)) {
     $comment = entity_create('comment', array('nid' => $node->nid));
     $additions['comment_form'] = drupal_get_form("comment_node_{$node->type}_form", $comment);
   }
@@ -969,7 +969,7 @@ function comment_view(Comment $comment, $node, $view_mode = 'full', $langcode =
 
   if (empty($comment->in_preview)) {
     $prefix = '';
-    $is_threaded = isset($comment->divs) && variable_get('comment_default_mode_' . $node->type, COMMENT_MODE_THREADED) == COMMENT_MODE_THREADED;
+    $is_threaded = isset($comment->divs) && variable_get('comment_default_mode_' . $node->type, COMMENT_MODE_THREADED) === COMMENT_MODE_THREADED;
 
     // Add 'new' anchor if needed.
     if (!empty($comment->first_new)) {
@@ -1058,7 +1058,7 @@ function comment_build_content(Comment $comment, $node, $view_mode = 'full', $la
  */
 function comment_links(Comment $comment, $node) {
   $links = array();
-  if ($node->comment == COMMENT_NODE_OPEN) {
+  if ($node->comment === COMMENT_NODE_OPEN) {
     if (user_access('administer comments') && user_access('post comments')) {
       $links['comment-delete'] = array(
         'title' => t('delete'),
@@ -1075,7 +1075,7 @@ function comment_links(Comment $comment, $node) {
         'href' => "comment/reply/$comment->nid/$comment->cid",
         'html' => TRUE,
       );
-      if ($comment->status == COMMENT_NOT_PUBLISHED) {
+      if ($comment->status === COMMENT_NOT_PUBLISHED) {
         $links['comment-approve'] = array(
           'title' => t('approve'),
           'href' => "comment/$comment->cid/approve",
@@ -1239,7 +1239,7 @@ function comment_form_node_form_alter(&$form, $form_state) {
     '#weight' => 30,
   );
   $comment_count = isset($node->nid) ? db_query('SELECT comment_count FROM {node_comment_statistics} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() : 0;
-  $comment_settings = ($node->comment == COMMENT_NODE_HIDDEN && empty($comment_count)) ? COMMENT_NODE_CLOSED : $node->comment;
+  $comment_settings = ($node->comment === COMMENT_NODE_HIDDEN && empty($comment_count)) ? COMMENT_NODE_CLOSED : $node->comment;
   $form['comment_settings']['comment'] = array(
     '#type' => 'radios',
     '#title' => t('Comments'),
@@ -1459,8 +1459,8 @@ function comment_user_predelete($account) {
 function comment_access($op, Comment $comment) {
   global $user;
 
-  if ($op == 'edit') {
-    return ($user->uid && $user->uid == $comment->uid && $comment->status == COMMENT_PUBLISHED && user_access('edit own comments')) || user_access('administer comments');
+  if ($op === 'edit') {
+    return ($user->uid && $user->uid === $comment->uid && $comment->status === COMMENT_PUBLISHED && user_access('edit own comments')) || user_access('administer comments');
   }
 }
 
@@ -1604,7 +1604,7 @@ function comment_get_display_ordinal($cid, $node_type) {
   }
   $mode = variable_get('comment_default_mode_' . $node_type, COMMENT_MODE_THREADED);
 
-  if ($mode == COMMENT_MODE_FLAT) {
+  if ($mode === COMMENT_MODE_FLAT) {
     // For flat comments, cid is used for ordering comments due to
     // unpredicatable behavior with timestamp, so we make the same assumption
     // here.
@@ -1773,7 +1773,7 @@ function comment_form($form, &$form_state, Comment $comment) {
       '#type' => 'textfield',
       '#title' => t('Your name'),
       '#default_value' => $author,
-      '#required' => (!$user->uid && $anonymous_contact == COMMENT_ANONYMOUS_MUST_CONTACT),
+      '#required' => (!$user->uid && $anonymous_contact === COMMENT_ANONYMOUS_MUST_CONTACT),
       '#maxlength' => 60,
       '#size' => 30,
     );
@@ -1784,7 +1784,7 @@ function comment_form($form, &$form_state, Comment $comment) {
     '#type' => 'email',
     '#title' => t('E-mail'),
     '#default_value' => $comment->mail,
-    '#required' => (!$user->uid && $anonymous_contact == COMMENT_ANONYMOUS_MUST_CONTACT),
+    '#required' => (!$user->uid && $anonymous_contact === COMMENT_ANONYMOUS_MUST_CONTACT),
     '#maxlength' => 64,
     '#size' => 30,
     '#description' => t('The content of this field is kept private and will not be shown publicly.'),
@@ -1824,7 +1824,7 @@ function comment_form($form, &$form_state, Comment $comment) {
     '#title' => t('Subject'),
     '#maxlength' => 64,
     '#default_value' => $comment->subject,
-    '#access' => variable_get('comment_subject_field_' . $node->type, 1) == 1,
+    '#access' => variable_get('comment_subject_field_' . $node->type, 1) === 1,
     '#weight' => -1,
   );
 
@@ -1843,7 +1843,7 @@ function comment_form($form, &$form_state, Comment $comment) {
   // If a content type has multilingual support we set the comment to inherit the
   // content language. Otherwise mark the comment as language neutral.
   $comment_langcode = $comment->langcode;
-  if (($comment_langcode == LANGUAGE_NOT_SPECIFIED) && variable_get('node_type_language_' . $node->type, 0)) {
+  if (($comment_langcode === LANGUAGE_NOT_SPECIFIED) && variable_get('node_type_language_' . $node->type, 0)) {
     $comment_langcode = $language_content->langcode;
   }
   $form['langcode'] = array(
@@ -2011,7 +2011,7 @@ function comment_submit(Comment $comment) {
   }
 
   // Validate the comment's subject. If not specified, extract from comment body.
-  if (trim($comment->subject) == '') {
+  if (trim($comment->subject) === '') {
     // The body may be in any format, so:
     // 1) Filter it into HTML
     // 2) Strip out all HTML tags
@@ -2026,7 +2026,7 @@ function comment_submit(Comment $comment) {
     $comment->subject = truncate_utf8(trim(decode_entities(strip_tags($comment_text))), 29, TRUE);
     // Edge cases where the comment body is populated only by HTML tags will
     // require a default subject.
-    if ($comment->subject == '') {
+    if ($comment->subject === '') {
       $comment->subject = t('(No subject)');
     }
   }
@@ -2062,7 +2062,7 @@ function comment_form_submit_build_comment($form, &$form_state) {
 function comment_form_submit($form, &$form_state) {
   $node = node_load($form_state['values']['nid']);
   $comment = comment_form_submit_build_comment($form, $form_state);
-  if (user_access('post comments') && (user_access('administer comments') || $node->comment == COMMENT_NODE_OPEN)) {
+  if (user_access('post comments') && (user_access('administer comments') || $node->comment === COMMENT_NODE_OPEN)) {
     // Save the anonymous user information to a cookie for reuse.
     if (user_is_anonymous()) {
       user_cookie_save(array_intersect_key($form_state['values'], array_flip(array('name', 'mail', 'homepage'))));
@@ -2075,7 +2075,7 @@ function comment_form_submit($form, &$form_state) {
     watchdog('content', 'Comment posted: %subject.', array('%subject' => $comment->subject), WATCHDOG_NOTICE, l(t('view'), 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)));
 
     // Explain the approval queue if necessary.
-    if ($comment->status == COMMENT_NOT_PUBLISHED) {
+    if ($comment->status === COMMENT_NOT_PUBLISHED) {
       if (!user_access('administer comments')) {
         drupal_set_message(t('Your comment has been queued for review by site administrators and will be published after approval.'));
       }
@@ -2108,7 +2108,7 @@ function comment_form_submit($form, &$form_state) {
  * Implements hook_preprocess_block().
  */
 function comment_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'comment') {
+  if ($variables['block']->module === 'comment') {
     $variables['attributes_array']['role'] = 'navigation';
   }
 }
@@ -2151,7 +2151,7 @@ function template_preprocess_comment(&$variables) {
     $variables['status'] = 'preview';
   }
   else {
-    $variables['status'] = ($comment->status == COMMENT_NOT_PUBLISHED) ? 'unpublished' : 'published';
+    $variables['status'] = ($comment->status === COMMENT_NOT_PUBLISHED) ? 'unpublished' : 'published';
   }
 
   // Gather comment classes.
@@ -2166,10 +2166,10 @@ function template_preprocess_comment(&$variables) {
     $variables['classes_array'][] = 'by-anonymous';
   }
   else {
-    if ($comment->uid == $variables['node']->uid) {
+    if ($comment->uid === $variables['node']->uid) {
       $variables['classes_array'][] = 'by-node-author';
     }
-    if ($comment->uid == $variables['user']->uid) {
+    if ($comment->uid === $variables['user']->uid) {
       $variables['classes_array'][] = 'by-viewer';
     }
   }
@@ -2203,7 +2203,7 @@ function theme_comment_post_forbidden($variables) {
     if ($authenticated_post_comments) {
       // We cannot use drupal_get_destination() because these links
       // sometimes appear on /node and taxonomy listing pages.
-      if (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW) == COMMENT_FORM_SEPARATE_PAGE) {
+      if (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW) === COMMENT_FORM_SEPARATE_PAGE) {
         $destination = array('destination' => "comment/reply/$node->nid#comment-form");
       }
       else {
@@ -2514,8 +2514,8 @@ function comment_rdf_mapping() {
  * Implements hook_file_download_access().
  */
 function comment_file_download_access($field, $entity_type, $entity) {
-  if ($entity_type == 'comment') {
-    if (user_access('access comments') && $entity->status == COMMENT_PUBLISHED || user_access('administer comments')) {
+  if ($entity_type === 'comment') {
+    if (user_access('access comments') && $entity->status === COMMENT_PUBLISHED || user_access('administer comments')) {
       $node = node_load($entity->nid);
       return node_access('view', $node);
     }
diff --git a/core/modules/comment/comment.pages.inc b/core/modules/comment/comment.pages.inc
index 21fe465..965072c 100644
--- a/core/modules/comment/comment.pages.inc
+++ b/core/modules/comment/comment.pages.inc
@@ -33,7 +33,7 @@ function comment_reply($node, $pid = NULL) {
   $build = array();
 
   // The user is previewing a comment prior to submitting it.
-  if ($op == t('Preview')) {
+  if ($op === t('Preview')) {
     if (user_access('post comments')) {
       $comment = entity_create('comment', array('nid' => $node->nid, 'pid' => $pid));
       $build['comment_form'] = drupal_get_form("comment_node_{$node->type}_form", $comment);
diff --git a/core/modules/comment/comment.test b/core/modules/comment/comment.test
index 259e420..cebd6e3 100644
--- a/core/modules/comment/comment.test
+++ b/core/modules/comment/comment.test
@@ -46,7 +46,7 @@ class CommentHelperCase extends DrupalWebTestCase {
       $this->drupalGet('comment/reply/' . $node->nid);
     }
 
-    if ($subject_mode == TRUE) {
+    if ($subject_mode === TRUE) {
       $edit['subject'] = $subject;
     }
     else {
@@ -239,7 +239,7 @@ class CommentHelperCase extends DrupalWebTestCase {
     $edit['comments[' . $comment->id . ']'] = TRUE;
     $this->drupalPost('admin/content/comment' . ($approval ? '/approval' : ''), $edit, t('Update'));
 
-    if ($operation == 'delete') {
+    if ($operation === 'delete') {
       $this->drupalPost(NULL, array(), t('Delete comments'));
       $this->assertRaw(format_plural(1, 'Deleted 1 comment.', 'Deleted @count comments.'), t('Operation "' . $operation . '" was performed on comment.'));
     }
@@ -324,7 +324,7 @@ class CommentInterfaceTest extends CommentHelperCase {
     $this->drupalGet('comment/' . $comment->id . '/edit');
     $comment = $this->postComment(NULL, $comment->comment, $comment->subject, array('name' => ''));
     $comment_loaded = comment_load($comment->id);
-    $this->assertTrue(empty($comment_loaded->name) && $comment_loaded->uid == 0, t('Comment author successfully changed to anonymous.'));
+    $this->assertTrue(empty($comment_loaded->name) && $comment_loaded->uid === 0, t('Comment author successfully changed to anonymous.'));
 
     // Test changing the comment author to an unverified user.
     $random_name = $this->randomName();
@@ -337,7 +337,7 @@ class CommentInterfaceTest extends CommentHelperCase {
     $this->drupalGet('comment/' . $comment->id . '/edit');
     $comment = $this->postComment(NULL, $comment->comment, $comment->subject, array('name' => $this->web_user->name));
     $comment_loaded = comment_load($comment->id);
-    $this->assertTrue($comment_loaded->name == $this->web_user->name && $comment_loaded->uid == $this->web_user->uid, t('Comment author successfully changed to a registered user.'));
+    $this->assertTrue($comment_loaded->name === $this->web_user->name && $comment_loaded->uid === $this->web_user->uid, t('Comment author successfully changed to a registered user.'));
 
     $this->drupalLogout();
 
@@ -440,7 +440,7 @@ class CommentInterfaceTest extends CommentHelperCase {
     $this->assertNoLink(t('@count new comments', array('@count' => 0)));
     $this->assertLink(t('Read more'));
     $count = $this->xpath('//div[@id=:id]/div[@class=:class]/ul/li', array(':id' => 'node-' . $this->node->nid, ':class' => 'link-wrapper'));
-    $this->assertTrue(count($count) == 1, t('One child found'));
+    $this->assertTrue(count($count) === 1, t('One child found'));
 
     // Create a new comment. This helper function may be run with different
     // comment settings so use comment_save() to avoid complex setup.
@@ -474,7 +474,7 @@ class CommentInterfaceTest extends CommentHelperCase {
     $this->assertNoLink(t('1 new comment'));
     $this->assertNoLink(t('@count new comments', array('@count' => 0)));
     $count = $this->xpath('//div[@id=:id]/div[@class=:class]/ul/li', array(':id' => 'node-' . $this->node->nid, ':class' => 'link-wrapper'));
-    $this->assertTrue(count($count) == 2, print_r($count, TRUE));
+    $this->assertTrue(count($count) === 2, print_r($count, TRUE));
   }
 
   /**
@@ -526,11 +526,11 @@ class CommentInterfaceTest extends CommentHelperCase {
       $this->drupalGet('node/' . $node->nid);
 
       // Verify classes if the comment is visible for the current user.
-      if ($case['comment_status'] == COMMENT_PUBLISHED || $case['user'] == 'admin') {
+      if ($case['comment_status'] === COMMENT_PUBLISHED || $case['user'] === 'admin') {
         // Verify the by-anonymous class.
         $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "by-anonymous")]');
-        if ($case['comment_uid'] == 0) {
-          $this->assertTrue(count($comments) == 1, 'by-anonymous class found.');
+        if ($case['comment_uid'] === 0) {
+          $this->assertTrue(count($comments) === 1, 'by-anonymous class found.');
         }
         else {
           $this->assertFalse(count($comments), 'by-anonymous class not found.');
@@ -538,8 +538,8 @@ class CommentInterfaceTest extends CommentHelperCase {
 
         // Verify the by-node-author class.
         $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "by-node-author")]');
-        if ($case['comment_uid'] > 0 && $case['comment_uid'] == $case['node_uid']) {
-          $this->assertTrue(count($comments) == 1, 'by-node-author class found.');
+        if ($case['comment_uid'] > 0 && $case['comment_uid'] === $case['node_uid']) {
+          $this->assertTrue(count($comments) === 1, 'by-node-author class found.');
         }
         else {
           $this->assertFalse(count($comments), 'by-node-author class not found.');
@@ -547,8 +547,8 @@ class CommentInterfaceTest extends CommentHelperCase {
 
         // Verify the by-viewer class.
         $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "by-viewer")]');
-        if ($case['comment_uid'] > 0 && $case['comment_uid'] == $case['user_uid']) {
-          $this->assertTrue(count($comments) == 1, 'by-viewer class found.');
+        if ($case['comment_uid'] > 0 && $case['comment_uid'] === $case['user_uid']) {
+          $this->assertTrue(count($comments) === 1, 'by-viewer class found.');
         }
         else {
           $this->assertFalse(count($comments), 'by-viewer class not found.');
@@ -557,18 +557,18 @@ class CommentInterfaceTest extends CommentHelperCase {
 
       // Verify the unpublished class.
       $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "unpublished")]');
-      if ($case['comment_status'] == COMMENT_NOT_PUBLISHED && $case['user'] == 'admin') {
-        $this->assertTrue(count($comments) == 1, 'unpublished class found.');
+      if ($case['comment_status'] === COMMENT_NOT_PUBLISHED && $case['user'] === 'admin') {
+        $this->assertTrue(count($comments) === 1, 'unpublished class found.');
       }
       else {
         $this->assertFalse(count($comments), 'unpublished class not found.');
       }
 
       // Verify the new class.
-      if ($case['comment_status'] == COMMENT_PUBLISHED || $case['user'] == 'admin') {
+      if ($case['comment_status'] === COMMENT_PUBLISHED || $case['user'] === 'admin') {
         $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "new")]');
         if ($case['user'] != 'anonymous') {
-          $this->assertTrue(count($comments) == 1, 'new class found.');
+          $this->assertTrue(count($comments) === 1, 'new class found.');
 
           // Request the node again. The new class should disappear.
           $this->drupalGet('node/' . $node->nid);
@@ -861,7 +861,7 @@ class CommentInterfaceTest extends CommentHelperCase {
 
       // User is allowed to view comments.
       if ($info['access comments']) {
-        if ($path == '') {
+        if ($path === '') {
           // In teaser view, a link containing the comment count is always
           // expected.
           if ($info['comment count']) {
@@ -884,7 +884,7 @@ class CommentInterfaceTest extends CommentHelperCase {
       // comment_num_new() is based on node views, so comments are marked as
       // read when a node is viewed, regardless of whether we have access to
       // comments.
-      if ($path == "node/$nid" && $this->loggedInUser && isset($this->comment)) {
+      if ($path === "node/$nid" && $this->loggedInUser && isset($this->comment)) {
         $this->comment->seen = TRUE;
       }
 
@@ -917,7 +917,7 @@ class CommentInterfaceTest extends CommentHelperCase {
 
         // "Add new comment" is always expected, except when there are no
         // comments or if the user cannot see them.
-        if ($path == "node/$nid" && $info['form'] == COMMENT_FORM_BELOW && (!$info['comment count'] || !$info['access comments'])) {
+        if ($path === "node/$nid" && $info['form'] === COMMENT_FORM_BELOW && (!$info['comment count'] || !$info['access comments'])) {
           $this->assertNoLink('Add new comment');
         }
         else {
@@ -925,7 +925,7 @@ class CommentInterfaceTest extends CommentHelperCase {
 
           // Verify that the "Add new comment" link points to the correct URL
           // based on the comment form location configuration.
-          if ($info['form'] == COMMENT_FORM_SEPARATE_PAGE) {
+          if ($info['form'] === COMMENT_FORM_SEPARATE_PAGE) {
             $this->assertLinkByHref("comment/reply/$nid#comment-form", 0, 'Comment form link destination is on a separate page.');
             $this->assertNoLinkByHref("node/$nid#comment-form");
           }
@@ -937,9 +937,9 @@ class CommentInterfaceTest extends CommentHelperCase {
 
         // Also verify that the comment form appears according to the configured
         // location.
-        if ($path == "node/$nid") {
+        if ($path === "node/$nid") {
           $elements = $this->xpath('//form[@id=:id]', array(':id' => 'comment-form'));
-          if ($info['form'] == COMMENT_FORM_BELOW) {
+          if ($info['form'] === COMMENT_FORM_BELOW) {
             $this->assertTrue(count($elements), t('Comment form found below.'));
           }
           else {
diff --git a/core/modules/comment/comment.tokens.inc b/core/modules/comment/comment.tokens.inc
index 1c6a7ee..accd04c 100644
--- a/core/modules/comment/comment.tokens.inc
+++ b/core/modules/comment/comment.tokens.inc
@@ -115,7 +115,7 @@ function comment_tokens($type, $tokens, array $data = array(), array $options =
 
   $replacements = array();
 
-  if ($type == 'comment' && !empty($data['comment'])) {
+  if ($type === 'comment' && !empty($data['comment'])) {
     $comment = $data['comment'];
 
     foreach ($tokens as $name => $original) {
@@ -131,7 +131,7 @@ function comment_tokens($type, $tokens, array $data = array(), array $options =
           break;
 
         case 'name':
-          $name = ($comment->uid == 0) ? variable_get('anonymous', t('Anonymous')) : $comment->name;
+          $name = ($comment->uid === 0) ? variable_get('anonymous', t('Anonymous')) : $comment->name;
           $replacements[$original] = $sanitize ? filter_xss($name) : $name;
           break;
 
@@ -223,7 +223,7 @@ function comment_tokens($type, $tokens, array $data = array(), array $options =
       $replacements += token_generate('user', $author_tokens, array('user' => $account), $options);
     }
   }
-  elseif ($type == 'node' & !empty($data['node'])) {
+  elseif ($type === 'node' & !empty($data['node'])) {
     $node = $data['node'];
 
     foreach ($tokens as $name => $original) {
diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module
index 89ce0bc..ea8d5dd 100644
--- a/core/modules/contact/contact.module
+++ b/core/modules/contact/contact.module
@@ -128,7 +128,7 @@ function _contact_personal_tab_access($account) {
   }
 
   // Users may not contact themselves.
-  if ($user->uid == $account->uid) {
+  if ($user->uid === $account->uid) {
     return FALSE;
   }
 
diff --git a/core/modules/dashboard/dashboard.js b/core/modules/dashboard/dashboard.js
index 39d87c2..8b584a6 100644
--- a/core/modules/dashboard/dashboard.js
+++ b/core/modules/dashboard/dashboard.js
@@ -25,7 +25,7 @@ Drupal.behaviors.dashboard = {
       var $this = $(this);
       var empty_text = "";
       // If the region is empty
-      if ($this.find('.block').length == 0) {
+      if ($this.find('.block').length === 0) {
         // Check if we are in customize mode and grab the correct empty text
         if ($('#dashboard').hasClass('customize-mode')) {
           empty_text = Drupal.settings.dashboard.emptyRegionTextActive;
@@ -33,7 +33,7 @@ Drupal.behaviors.dashboard = {
           empty_text = Drupal.settings.dashboard.emptyRegionTextInactive;
         }
         // We need a placeholder.
-        if ($this.find('.placeholder').length == 0) {
+        if ($this.find('.placeholder').length === 0) {
           $this.append('<div class="placeholder"></div>');
         }
         $this.find('.placeholder').html(empty_text);
diff --git a/core/modules/dashboard/dashboard.module b/core/modules/dashboard/dashboard.module
index 889af83..d4f9596 100644
--- a/core/modules/dashboard/dashboard.module
+++ b/core/modules/dashboard/dashboard.module
@@ -101,12 +101,12 @@ function dashboard_permission() {
  */
 function dashboard_block_info_alter(&$blocks, $theme, $code_blocks) {
   $admin_theme = variable_get('admin_theme');
-  if (($admin_theme && $theme == $admin_theme) || (!$admin_theme && $theme == variable_get('theme_default', 'stark'))) {
+  if (($admin_theme && $theme === $admin_theme) || (!$admin_theme && $theme === variable_get('theme_default', 'stark'))) {
     foreach ($blocks as $module => &$module_blocks) {
       foreach ($module_blocks as $delta => &$block) {
         // Make administrative blocks that are not already in use elsewhere
         // available for the dashboard.
-        if (empty($block['status']) && (empty($block['region']) || $block['region'] == BLOCK_REGION_NONE) && !empty($code_blocks[$module][$delta]['properties']['administrative'])) {
+        if (empty($block['status']) && (empty($block['region']) || $block['region'] === BLOCK_REGION_NONE) && !empty($code_blocks[$module][$delta]['properties']['administrative'])) {
           $block['status'] = 1;
           $block['region'] = 'dashboard_inactive';
         }
@@ -148,7 +148,7 @@ function dashboard_page_build(&$page) {
     $page['content']['dashboard'] = array('#theme_wrappers' => array('dashboard'));
     foreach (dashboard_regions() as $region) {
       // Do not show dashboard blocks that are disabled.
-      if ($region == 'dashboard_inactive') {
+      if ($region === 'dashboard_inactive') {
         continue;
       }
       // Insert regions even when they are empty, so that they will be
@@ -206,7 +206,7 @@ function dashboard_page_build(&$page) {
  * Add regions to each theme to store the dashboard blocks.
  */
 function dashboard_system_info_alter(&$info, $file, $type) {
-  if ($type == 'theme') {
+  if ($type === 'theme') {
     // Add the dashboard regions (the "inactive" region should always appear
     // last in the list, for usability reasons).
     $dashboard_regions = dashboard_region_descriptions();
@@ -366,7 +366,7 @@ function dashboard_form_block_admin_display_form_alter(&$form, &$form_state, $fo
       // 'dashboard_inactive' region, because dashboard_block_info_alter() is
       // called when the blocks are rehashed. Fortunately, this is the exact
       // behavior we want.
-      if ($block['region']['#default_value'] == 'dashboard_inactive') {
+      if ($block['region']['#default_value'] === 'dashboard_inactive') {
         // @todo These do not wind up in correct alphabetical order.
         $block['region']['#default_value'] = NULL;
       }
@@ -456,7 +456,7 @@ function dashboard_is_visible() {
     // the dashboard, and if the current user has access to see it, return
     // TRUE.
     $menu_item = menu_get_item();
-    $is_visible = isset($menu_item['page_callback']) && $menu_item['page_callback'] == 'dashboard_admin' && !empty($menu_item['access']);
+    $is_visible = isset($menu_item['page_callback']) && $menu_item['page_callback'] === 'dashboard_admin' && !empty($menu_item['access']);
   }
   return $is_visible;
 }
@@ -554,7 +554,7 @@ function dashboard_update() {
   if (!empty($_REQUEST['form_token']) && drupal_valid_token($_REQUEST['form_token'], 'dashboard-update')) {
     parse_str($_REQUEST['regions'], $regions);
     foreach ($regions as $region_name => $blocks) {
-      if ($region_name == 'disabled_blocks') {
+      if ($region_name === 'disabled_blocks') {
         $region_name = 'dashboard_inactive';
       }
       foreach ($blocks as $weight => $block_string) {
diff --git a/core/modules/dashboard/dashboard.test b/core/modules/dashboard/dashboard.test
index ff37d57..faa4906 100644
--- a/core/modules/dashboard/dashboard.test
+++ b/core/modules/dashboard/dashboard.test
@@ -148,7 +148,7 @@ class DashboardBlockAvailabilityTestCase extends DrupalWebTestCase {
     $this->assertNoText(t('Syndicate'), t('Drawer of disabled blocks excludes a block not defined as "administrative".'));
     $this->drupalGet('admin/dashboard/configure');
     $elements = $this->xpath('//select[@id=:id]//option[@selected="selected"]', array(':id' => 'edit-blocks-comment-recent-region'));
-    $this->assertTrue($elements[0]['value'] == 'dashboard_inactive', t('A block defined as "administrative" defaults to dashboard_inactive.'));
+    $this->assertTrue($elements[0]['value'] === 'dashboard_inactive', t('A block defined as "administrative" defaults to dashboard_inactive.'));
 
     // Now enable the block on the dashboard.
     $values = array();
diff --git a/core/modules/dblog/dblog.admin.inc b/core/modules/dblog/dblog.admin.inc
index b2da7ed..9859011 100644
--- a/core/modules/dblog/dblog.admin.inc
+++ b/core/modules/dblog/dblog.admin.inc
@@ -322,7 +322,7 @@ function dblog_filter_form($form) {
  * Validate result from dblog administration filter form.
  */
 function dblog_filter_form_validate($form, &$form_state) {
-  if ($form_state['values']['op'] == t('Filter') && empty($form_state['values']['type']) && empty($form_state['values']['severity'])) {
+  if ($form_state['values']['op'] === t('Filter') && empty($form_state['values']['type']) && empty($form_state['values']['severity'])) {
     form_set_error('type', t('You must select something to filter by.'));
   }
 }
diff --git a/core/modules/dblog/dblog.module b/core/modules/dblog/dblog.module
index a43e0a5..e8050bf 100644
--- a/core/modules/dblog/dblog.module
+++ b/core/modules/dblog/dblog.module
@@ -89,7 +89,7 @@ function dblog_menu() {
  * Implements hook_init().
  */
 function dblog_init() {
-  if (arg(0) == 'admin' && arg(1) == 'reports') {
+  if (arg(0) === 'admin' && arg(1) === 'reports') {
     // Add the CSS for this module
     drupal_add_css(drupal_get_path('module', 'dblog') . '/dblog.css');
   }
diff --git a/core/modules/dblog/dblog.test b/core/modules/dblog/dblog.test
index 77765d7..078b037 100644
--- a/core/modules/dblog/dblog.test
+++ b/core/modules/dblog/dblog.test
@@ -61,10 +61,10 @@ class DBLogTestCase extends DrupalWebTestCase {
 
     // Check row limit variable.
     $current_limit = variable_get('dblog_row_limit', 1000);
-    $this->assertTrue($current_limit == $row_limit, t('[Cache] Row limit variable of @count equals row limit of @limit', array('@count' => $current_limit, '@limit' => $row_limit)));
+    $this->assertTrue($current_limit === $row_limit, t('[Cache] Row limit variable of @count equals row limit of @limit', array('@count' => $current_limit, '@limit' => $row_limit)));
     // Verify dblog row limit equals specified row limit.
     $current_limit = unserialize(db_query("SELECT value FROM {variable} WHERE name = :dblog_limit", array(':dblog_limit' => 'dblog_row_limit'))->fetchField());
-    $this->assertTrue($current_limit == $row_limit, t('[Variable table] Row limit variable of @count equals row limit of @limit', array('@count' => $current_limit, '@limit' => $row_limit)));
+    $this->assertTrue($current_limit === $row_limit, t('[Variable table] Row limit variable of @count equals row limit of @limit', array('@count' => $current_limit, '@limit' => $row_limit)));
   }
 
   /**
@@ -83,7 +83,7 @@ class DBLogTestCase extends DrupalWebTestCase {
     $this->cronRun();
     // Verify dblog row count equals row limit plus one because cron adds a record after it runs.
     $count = db_query('SELECT COUNT(wid) FROM {watchdog}')->fetchField();
-    $this->assertTrue($count == $row_limit + 1, t('Dblog row count of @count equals row limit of @limit plus one', array('@count' => $count, '@limit' => $row_limit)));
+    $this->assertTrue($count === $row_limit + 1, t('Dblog row count of @count equals row limit of @limit plus one', array('@count' => $count, '@limit' => $row_limit)));
   }
 
   /**
@@ -131,35 +131,35 @@ class DBLogTestCase extends DrupalWebTestCase {
     // View dblog help node.
     $this->drupalGet('admin/help/dblog');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Database Logging'), t('DBLog help was displayed'));
     }
 
     // View dblog report node.
     $this->drupalGet('admin/reports/dblog');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Recent log messages'), t('DBLog report was displayed'));
     }
 
     // View dblog page-not-found report node.
     $this->drupalGet('admin/reports/page-not-found');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Top ' . $quote . 'page not found' . $quote . ' errors'), t('DBLog page-not-found report was displayed'));
     }
 
     // View dblog access-denied report node.
     $this->drupalGet('admin/reports/access-denied');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Top ' . $quote . 'access denied' . $quote . ' errors'), t('DBLog access-denied report was displayed'));
     }
 
     // View dblog event node.
     $this->drupalGet('admin/reports/event/1');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Details'), t('DBLog event node was displayed'));
     }
   }
@@ -239,7 +239,7 @@ class DBLogTestCase extends DrupalWebTestCase {
       // Found link with the message text.
       $links = array_shift($links);
       foreach ($links->attributes() as $attr => $value) {
-        if ($attr == 'href') {
+        if ($attr === 'href') {
           // Extract link to details page.
           $link = drupal_substr($value, strpos($value, 'admin/reports/event/'));
           $this->drupalGet($link);
@@ -453,7 +453,7 @@ class DBLogTestCase extends DrupalWebTestCase {
       // Count the number of entries of this type.
       $type_count = 0;
       foreach ($types as $type) {
-        if ($type['type'] == $type_name) {
+        if ($type['type'] === $type_name) {
           $type_count += $type['count'];
         }
       }
@@ -515,7 +515,7 @@ class DBLogTestCase extends DrupalWebTestCase {
     $count = array_fill(0, count($types), 0);
     foreach ($entries as $entry) {
       foreach ($types as $key => $type) {
-        if ($entry['type'] == $type['type'] && $entry['severity'] == $type['severity']) {
+        if ($entry['type'] === $type['type'] && $entry['severity'] === $type['severity']) {
           $count[$key]++;
           break;
         }
diff --git a/core/modules/entity/entity.api.php b/core/modules/entity/entity.api.php
index e983778..8450a29 100644
--- a/core/modules/entity/entity.api.php
+++ b/core/modules/entity/entity.api.php
@@ -414,7 +414,7 @@ function hook_entity_view($entity, $type, $view_mode, $langcode) {
  * @see hook_user_view_alter()
  */
 function hook_entity_view_alter(&$build, $type) {
-  if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
+  if ($build['#view_mode'] === 'full' && isset($build['an_additional_field'])) {
     // Change its weight.
     $build['an_additional_field']['#weight'] = -10;
 
@@ -437,7 +437,7 @@ function hook_entity_view_alter(&$build, $type) {
  */
 function hook_entity_prepare_view($entities, $type) {
   // Load a specific node into the user object for later theming.
-  if ($type == 'user') {
+  if ($type === 'user') {
     $nodes = mymodule_get_user_nodes(array_keys($entities));
     foreach ($entities as $uid => $entity) {
       $entity->user_node = $nodes[$uid];
diff --git a/core/modules/entity/entity.query.inc b/core/modules/entity/entity.query.inc
index f854369..b4a1e28 100644
--- a/core/modules/entity/entity.query.inc
+++ b/core/modules/entity/entity.query.inc
@@ -610,8 +610,8 @@ class EntityFieldQuery {
     $order = tablesort_get_order($headers);
     $direction = tablesort_get_sort($headers);
     foreach ($headers as $header) {
-      if (is_array($header) && ($header['data'] == $order['name'])) {
-        if ($header['type'] == 'field') {
+      if (is_array($header) && ($header['data'] === $order['name'])) {
+        if ($header['type'] === 'field') {
           $this->fieldOrderBy($header['specifier']['field'], $header['specifier']['column'], $direction);
         }
         else {
@@ -855,14 +855,14 @@ class EntityFieldQuery {
 
     // Order the query.
     foreach ($this->order as $order) {
-      if ($order['type'] == 'entity') {
+      if ($order['type'] === 'entity') {
         $key = $order['specifier'];
         if (!isset($id_map[$key])) {
           throw new EntityFieldQueryException(t('Do not know how to order on @key for @entity_type', array('@key' => $key, '@entity_type' => $entity_type)));
         }
         $select_query->orderBy($id_map[$key], $order['direction']);
       }
-      elseif ($order['type'] == 'property') {
+      elseif ($order['type'] === 'property') {
         $select_query->orderBy("$base_table." . $order['specifier'], $order['direction']);
       }
     }
diff --git a/core/modules/entity/tests/entity_crud_hook_test.test b/core/modules/entity/tests/entity_crud_hook_test.test
index be59e99..949ab7f 100644
--- a/core/modules/entity/tests/entity_crud_hook_test.test
+++ b/core/modules/entity/tests/entity_crud_hook_test.test
@@ -55,7 +55,7 @@ class EntityCrudHookTestCase extends DrupalWebTestCase {
     // Sort the positions and ensure they remain in the same order.
     $sorted = $positions;
     sort($sorted);
-    $this->assertTrue($sorted == $positions, 'The hook messages appear in the correct order.');
+    $this->assertTrue($sorted === $positions, 'The hook messages appear in the correct order.');
   }
 
   /**
diff --git a/core/modules/entity/tests/entity_query.test b/core/modules/entity/tests/entity_query.test
index fb5dc14..f9d9ea0 100644
--- a/core/modules/entity/tests/entity_query.test
+++ b/core/modules/entity/tests/entity_query.test
@@ -1043,7 +1043,7 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
       $query->execute();
     }
     catch (EntityFieldQueryException $exception) {
-      $pass = ($exception->getMessage() == t('For this query an entity type must be specified.'));
+      $pass = ($exception->getMessage() === t('For this query an entity type must be specified.'));
     }
     $this->assertTrue($pass, t("Can't query the universe."));
   }
@@ -1262,7 +1262,7 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
       $query->queryCallback();
     }
     catch (EntityFieldQueryException $exception) {
-      $pass = ($exception->getMessage() == t("Can't handle more than one field storage engine"));
+      $pass = ($exception->getMessage() === t("Can't handle more than one field storage engine"));
     }
     $this->assertTrue($pass, t('Cannot query across field storage engines.'));
   }
diff --git a/core/modules/entity/tests/modules/entity_cache_test/entity_cache_test.module b/core/modules/entity/tests/modules/entity_cache_test/entity_cache_test.module
index 5ae9ecc..a9dbcd6 100644
--- a/core/modules/entity/tests/modules/entity_cache_test/entity_cache_test.module
+++ b/core/modules/entity/tests/modules/entity_cache_test/entity_cache_test.module
@@ -18,7 +18,7 @@
  * @see entity_cache_test_dependency_entity_info()
  */
 function entity_cache_test_watchdog($log_entry) {
-  if ($log_entry['type'] == 'system' && $log_entry['message'] == '%module module installed.') {
+  if ($log_entry['type'] === 'system' && $log_entry['message'] === '%module module installed.') {
     $info = entity_get_info('entity_cache_test');
     // Store the information in a system variable to analyze it later in the
     // test case.
diff --git a/core/modules/field/field.api.php b/core/modules/field/field.api.php
index d9061e1..bd6f15e 100644
--- a/core/modules/field/field.api.php
+++ b/core/modules/field/field.api.php
@@ -219,7 +219,7 @@ function hook_field_info_alter(&$info) {
  *     definitions.
  */
 function hook_field_schema($field) {
-  if ($field['type'] == 'text_long') {
+  if ($field['type'] === 'text_long') {
     $columns = array(
       'value' => array(
         'type' => 'text',
@@ -302,7 +302,7 @@ function hook_field_load($entity_type, $entities, $field, $instances, $langcode,
       // by formatters if needed.
       if (empty($instances[$id]['settings']['text_processing']) || filter_format_allowcache($item['format'])) {
         $items[$id][$delta]['safe_value'] = isset($item['value']) ? _text_sanitize($instances[$id], $langcode, $item, 'value') : '';
-        if ($field['type'] == 'text_with_summary') {
+        if ($field['type'] === 'text_with_summary') {
           $items[$id][$delta]['safe_summary'] = isset($item['summary']) ? _text_sanitize($instances[$id], $langcode, $item, 'summary') : '';
         }
       }
@@ -414,7 +414,7 @@ function hook_field_validate($entity_type, $entity, $field, $instance, $langcode
  *   $entity->{$field['field_name']}[$langcode], or an empty array if unset.
  */
 function hook_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
-  if ($field['type'] == 'number_decimal') {
+  if ($field['type'] === 'number_decimal') {
     // Let PHP round the value to ensure consistent behavior across storage
     // backends.
     foreach ($items as $delta => $item) {
@@ -452,7 +452,7 @@ function hook_field_presave($entity_type, $entity, $field, $instance, $langcode,
  * @see hook_field_delete()
  */
 function hook_field_insert($entity_type, $entity, $field, $instance, $langcode, &$items) {
-  if (variable_get('taxonomy_maintain_index_table', TRUE) && $field['storage']['type'] == 'field_sql_storage' && $entity_type == 'node' && $entity->status) {
+  if (variable_get('taxonomy_maintain_index_table', TRUE) && $field['storage']['type'] === 'field_sql_storage' && $entity_type === 'node' && $entity->status) {
     $query = db_insert('taxonomy_index')->fields(array('nid', 'tid', 'sticky', 'created', ));
     foreach ($items as $item) {
       $query->values(array(
@@ -493,7 +493,7 @@ function hook_field_insert($entity_type, $entity, $field, $instance, $langcode,
  * @see hook_field_delete()
  */
 function hook_field_update($entity_type, $entity, $field, $instance, $langcode, &$items) {
-  if (variable_get('taxonomy_maintain_index_table', TRUE) && $field['storage']['type'] == 'field_sql_storage' && $entity_type == 'node') {
+  if (variable_get('taxonomy_maintain_index_table', TRUE) && $field['storage']['type'] === 'field_sql_storage' && $entity_type === 'node') {
     $first_call = &drupal_static(__FUNCTION__, array());
 
     // We don't maintain data for old revisions, so clear all previous values
@@ -896,7 +896,7 @@ function hook_field_widget_form(&$form, &$form_state, $field, $instance, $langco
  */
 function hook_field_widget_form_alter(&$element, &$form_state, $context) {
   // Add a css class to widget form elements for all fields of type mytype.
-  if ($context['field']['type'] == 'mytype') {
+  if ($context['field']['type'] === 'mytype') {
     // Be sure not to overwrite existing attributes.
     $element['#attributes']['class'][] = 'myclass';
   }
@@ -1393,7 +1393,7 @@ function hook_field_attach_delete_revision($entity_type, $entity) {
  */
 function hook_field_attach_purge($entity_type, $entity, $field, $instance) {
   // find the corresponding data in mymodule and purge it
-  if ($entity_type == 'node' && $field->field_name == 'my_field_name') {
+  if ($entity_type === 'node' && $field->field_name === 'my_field_name') {
     mymodule_remove_mydata($entity->nid);
   }
 }
@@ -1422,7 +1422,7 @@ function hook_field_attach_view_alter(&$output, $context) {
   // Append RDF term mappings on displayed taxonomy links.
   foreach (element_children($output) as $field_name) {
     $element = &$output[$field_name];
-    if ($element['#field_type'] == 'taxonomy_term_reference' && $element['#formatter'] == 'taxonomy_term_reference_link') {
+    if ($element['#field_type'] === 'taxonomy_term_reference' && $element['#formatter'] === 'taxonomy_term_reference_link') {
       foreach ($element['#items'] as $delta => $item) {
         $term = $item['taxonomy_term'];
         if (!empty($term->rdf_mapping['rdftype'])) {
@@ -1451,7 +1451,7 @@ function hook_field_attach_view_alter(&$output, $context) {
  *   - source_langcode: The source language from which translate.
  */
 function hook_field_attach_prepare_translation_alter(&$entity, $context) {
-  if ($context['entity_type'] == 'custom_entity_type') {
+  if ($context['entity_type'] === 'custom_entity_type') {
     $entity->custom_field = $context['source_entity']->custom_field;
   }
 }
@@ -1656,7 +1656,7 @@ function hook_field_storage_details($field) {
  * @see hook_field_storage_details()
  */
 function hook_field_storage_details_alter(&$details, $field) {
-  if ($field['field_name'] == 'field_of_interest') {
+  if ($field['field_name'] === 'field_of_interest') {
     $columns = array();
     foreach ((array) $field['columns'] as $column_name => $attributes) {
       $columns[$column_name] = $column_name;
@@ -1701,7 +1701,7 @@ function hook_field_storage_details_alter(&$details, $field) {
  */
 function hook_field_storage_load($entity_type, $entities, $age, $fields, $options) {
   $field_info = field_info_field_by_ids();
-  $load_current = $age == FIELD_LOAD_CURRENT;
+  $load_current = $age === FIELD_LOAD_CURRENT;
 
   foreach ($fields as $field_id => $ids) {
     $field = $field_info[$field_id];
@@ -1727,7 +1727,7 @@ function hook_field_storage_load($entity_type, $entities, $age, $fields, $option
         $delta_count[$row->entity_id][$row->langcode] = 0;
       }
 
-      if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta_count[$row->entity_id][$row->langcode] < $field['cardinality']) {
+      if ($field['cardinality'] === FIELD_CARDINALITY_UNLIMITED || $delta_count[$row->entity_id][$row->langcode] < $field['cardinality']) {
         $item = array();
         // For each column declared by the field, populate the item
         // from the prefixed database column.
@@ -1777,7 +1777,7 @@ function hook_field_storage_write($entity_type, $entity, $op, $fields) {
     $field_langcodes = array_intersect($all_langcodes, array_keys((array) $entity->$field_name));
 
     // Delete and insert, rather than update, in case a value was added.
-    if ($op == FIELD_STORAGE_UPDATE) {
+    if ($op === FIELD_STORAGE_UPDATE) {
       // Delete language codes present in the incoming $entity->$field_name.
       // Delete all language codes if $entity->$field_name is empty.
       $langcodes = !empty($entity->$field_name) ? $field_langcodes : $all_langcodes;
@@ -1827,7 +1827,7 @@ function hook_field_storage_write($entity_type, $entity, $op, $fields) {
           $revision_query->values($record);
         }
 
-        if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED && ++$delta_count == $field['cardinality']) {
+        if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED && ++$delta_count === $field['cardinality']) {
           break;
         }
       }
@@ -1917,7 +1917,7 @@ function hook_field_storage_delete_revision($entity_type, $entity, $fields) {
  */
 function hook_field_storage_query($query) {
   $groups = array();
-  if ($query->age == FIELD_LOAD_CURRENT) {
+  if ($query->age === FIELD_LOAD_CURRENT) {
     $tablename_function = '_field_sql_storage_tablename';
     $id_key = 'entity_id';
   }
@@ -1975,7 +1975,7 @@ function hook_field_storage_query($query) {
   // Is there a need to sort the query by property?
   $has_property_order = FALSE;
   foreach ($query->order as $order) {
-    if ($order['type'] == 'property') {
+    if ($order['type'] === 'property') {
       $has_property_order = TRUE;
     }
   }
@@ -1997,18 +1997,18 @@ function hook_field_storage_query($query) {
 
   // Order the query.
   foreach ($query->order as $order) {
-    if ($order['type'] == 'entity') {
+    if ($order['type'] === 'entity') {
       $key = $order['specifier'];
       $select_query->orderBy("$field_base_table.$key", $order['direction']);
     }
-    elseif ($order['type'] == 'field') {
+    elseif ($order['type'] === 'field') {
       $specifier = $order['specifier'];
       $field = $specifier['field'];
       $table_alias = $table_aliases[$specifier['index']];
       $sql_field = "$table_alias." . _field_sql_storage_columnname($field['field_name'], $specifier['column']);
       $select_query->orderBy($sql_field, $order['direction']);
     }
-    elseif ($order['type'] == 'property') {
+    elseif ($order['type'] === 'property') {
       $select_query->orderBy("$entity_base_table." . $order['specifier'], $order['direction']);
     }
   }
@@ -2141,7 +2141,7 @@ function hook_field_storage_pre_load($entity_type, $entities, $age, &$skip_field
  *   Saved field IDs are set set as keys in $skip_fields.
  */
 function hook_field_storage_pre_insert($entity_type, $entity, &$skip_fields) {
-  if ($entity_type == 'node' && $entity->status && _forum_node_check_node_type($entity)) {
+  if ($entity_type === 'node' && $entity->status && _forum_node_check_node_type($entity)) {
     $query = db_insert('forum_index')->fields(array('nid', 'title', 'tid', 'sticky', 'created', 'comment_count', 'last_comment_timestamp'));
     foreach ($entity->taxonomy_forums as $language) {
       foreach ($language as $delta) {
@@ -2180,7 +2180,7 @@ function hook_field_storage_pre_insert($entity_type, $entity, &$skip_fields) {
 function hook_field_storage_pre_update($entity_type, $entity, &$skip_fields) {
   $first_call = &drupal_static(__FUNCTION__, array());
 
-  if ($entity_type == 'node' && $entity->status && _forum_node_check_node_type($entity)) {
+  if ($entity_type === 'node' && $entity->status && _forum_node_check_node_type($entity)) {
     // We don't maintain data for old revisions, so clear all previous values
     // from the table. Since this hook runs once per field, per entity, make
     // sure we only wipe values once.
@@ -2265,11 +2265,11 @@ function hook_field_info_max_weight($entity_type, $bundle, $context) {
  */
 function hook_field_display_alter(&$display, $context) {
   // Leave field labels out of the search index.
-  // Note: The check against $context['entity_type'] == 'node' could be avoided
+  // Note: The check against $context['entity_type'] === 'node' could be avoided
   // by using hook_field_display_node_alter() instead of
   // hook_field_display_alter(), resulting in less function calls when
   // rendering non-node entities.
-  if ($context['entity_type'] == 'node' && $context['view_mode'] == 'search_index') {
+  if ($context['entity_type'] === 'node' && $context['view_mode'] === 'search_index') {
     $display['label'] = 'hidden';
   }
 }
@@ -2300,7 +2300,7 @@ function hook_field_display_alter(&$display, $context) {
  */
 function hook_field_display_ENTITY_TYPE_alter(&$display, $context) {
   // Leave field labels out of the search index.
-  if ($context['view_mode'] == 'search_index') {
+  if ($context['view_mode'] === 'search_index') {
     $display['label'] = 'hidden';
   }
 }
@@ -2322,7 +2322,7 @@ function hook_field_display_ENTITY_TYPE_alter(&$display, $context) {
  *   - view_mode: The view mode, e.g. 'full', 'teaser'...
  */
 function hook_field_extra_fields_display_alter(&$displays, $context) {
-  if ($context['entity_type'] == 'taxonomy_term' && $context['view_mode'] == 'full') {
+  if ($context['entity_type'] === 'taxonomy_term' && $context['view_mode'] === 'full') {
     $displays['description']['visible'] = FALSE;
   }
 }
@@ -2353,7 +2353,7 @@ function hook_field_extra_fields_display_alter(&$displays, $context) {
 function hook_field_widget_properties_alter(&$widget, $context) {
   // Change a widget's type according to the time of day.
   $field = $context['field'];
-  if ($context['entity_type'] == 'node' && $field['field_name'] == 'field_foo') {
+  if ($context['entity_type'] === 'node' && $field['field_name'] === 'field_foo') {
     $time = date('H');
     $widget['type'] = $time < 12 ? 'widget_am' : 'widget_pm';
   }
@@ -2385,7 +2385,7 @@ function hook_field_widget_properties_alter(&$widget, $context) {
 function hook_field_widget_properties_ENTITY_TYPE_alter(&$widget, $context) {
   // Change a widget's type according to the time of day.
   $field = $context['field'];
-  if ($field['field_name'] == 'field_foo') {
+  if ($field['field_name'] === 'field_foo') {
     $time = date('H');
     $widget['type'] = $time < 12 ? 'widget_am' : 'widget_pm';
   }
@@ -2669,7 +2669,7 @@ function hook_field_storage_purge($entity_type, $entity, $field, $instance) {
  *   TRUE if the operation is allowed, and FALSE if the operation is denied.
  */
 function hook_field_access($op, $field, $entity_type, $entity, $account) {
-  if ($field['field_name'] == 'field_of_interest' && $op == 'edit') {
+  if ($field['field_name'] === 'field_of_interest' && $op === 'edit') {
     return user_access('edit field of interest', $account);
   }
   return TRUE;
diff --git a/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc
index ff579c7..a86d295 100644
--- a/core/modules/field/field.attach.inc
+++ b/core/modules/field/field.attach.inc
@@ -442,7 +442,7 @@ function _field_invoke_get_instances($entity_type, $bundle, $options) {
       // Single-field mode by field id: we need to loop on each instance to
       // find the right one.
       foreach ($instances as $instance) {
-        if ($instance['field_id'] == $options['field_id']) {
+        if ($instance['field_id'] === $options['field_id']) {
           $instances = array($instance);
           break;
         }
@@ -615,7 +615,7 @@ function field_attach_form($entity_type, $entity, &$form, &$form_state, $langcod
  */
 function field_attach_load($entity_type, $entities, $age = FIELD_LOAD_CURRENT, $options = array()) {
   $field_info = field_info_field_by_ids();
-  $load_current = $age == FIELD_LOAD_CURRENT;
+  $load_current = $age === FIELD_LOAD_CURRENT;
 
   // Merge default options.
   $default_options = array(
diff --git a/core/modules/field/field.crud.inc b/core/modules/field/field.crud.inc
index f9c96c9..aea8fc6 100644
--- a/core/modules/field/field.crud.inc
+++ b/core/modules/field/field.crud.inc
@@ -753,7 +753,7 @@ function field_delete_instance($instance, $field_cleanup = TRUE) {
   module_invoke_all('field_delete_instance', $instance);
 
   // Delete the field itself if we just deleted its last instance.
-  if ($field_cleanup && count($field['bundles']) == 0) {
+  if ($field_cleanup && count($field['bundles']) === 0) {
     field_delete_field($field['field_name']);
   }
 }
diff --git a/core/modules/field/field.default.inc b/core/modules/field/field.default.inc
index 1e1675c..d8764fc 100644
--- a/core/modules/field/field.default.inc
+++ b/core/modules/field/field.default.inc
@@ -108,7 +108,7 @@ function field_default_insert($entity_type, $entity, $field, $instance, $langcod
   // languages get a default value. Otherwise we could have default values for
   // not yet open languages.
   if (empty($entity) || !property_exists($entity, $field['field_name']) ||
-    (isset($entity->{$field['field_name']}[$langcode]) && count($entity->{$field['field_name']}[$langcode]) == 0)) {
+    (isset($entity->{$field['field_name']}[$langcode]) && count($entity->{$field['field_name']}[$langcode]) === 0)) {
     $items = field_get_default_value($entity_type, $entity, $field, $instance, $langcode);
   }
 }
@@ -259,7 +259,7 @@ function field_default_view($entity_type, $entity, $field, $instance, $langcode,
 function field_default_prepare_translation($entity_type, $entity, $field, $instance, $langcode, &$items, $source_entity, $source_langcode) {
   $field_name = $field['field_name'];
   // If the field is untranslatable keep using LANGUAGE_NOT_SPECIFIED.
-  if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+  if ($langcode === LANGUAGE_NOT_SPECIFIED) {
     $source_langcode = LANGUAGE_NOT_SPECIFIED;
   }
   if (isset($source_entity->{$field_name}[$source_langcode])) {
diff --git a/core/modules/field/field.form.inc b/core/modules/field/field.form.inc
index be3685d..dd27e9d 100644
--- a/core/modules/field/field.form.inc
+++ b/core/modules/field/field.form.inc
@@ -52,7 +52,7 @@ function field_default_form($entity_type, $entity, $field, $instance, $langcode,
 
     // If field module handles multiple values for this form element, and we
     // are displaying an individual element, process the multiple value form.
-    if (!isset($get_delta) && field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) {
+    if (!isset($get_delta) && field_behaviors_widget('multiple values', $instance) === FIELD_BEHAVIOR_DEFAULT) {
       $elements = field_multiple_value_form($field, $instance, $langcode, $items, $form, $form_state);
     }
     // If the widget is handling multiple values (e.g Options), or if we are
@@ -72,7 +72,7 @@ function field_default_form($entity_type, $entity, $field, $instance, $langcode,
           '#title' => check_plain($instance['label']),
           '#description' => field_filter_xss($instance['description']),
           // Only the first widget should be required.
-          '#required' => $delta == 0 && $instance['required'],
+          '#required' => $delta === 0 && $instance['required'],
           '#delta' => $delta,
         );
         if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta, $element)) {
@@ -92,7 +92,7 @@ function field_default_form($entity_type, $entity, $field, $instance, $langcode,
           // For fields that handle their own processing, we can't make
           // assumptions about how the field is structured, just merge in the
           // returned element.
-          if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) {
+          if (field_behaviors_widget('multiple values', $instance) === FIELD_BEHAVIOR_DEFAULT) {
             $elements[$delta] = $element;
           }
           else {
@@ -173,7 +173,7 @@ function field_multiple_value_form($field, $instance, $langcode, $items, &$form,
   $function = $instance['widget']['module'] . '_field_widget_form';
   if (function_exists($function)) {
     for ($delta = 0; $delta <= $max; $delta++) {
-      $multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
+      $multiple = $field['cardinality'] > 1 || $field['cardinality'] === FIELD_CARDINALITY_UNLIMITED;
       $element = array(
         '#entity_type' => $instance['entity_type'],
         '#bundle' => $instance['bundle'],
@@ -185,7 +185,7 @@ function field_multiple_value_form($field, $instance, $langcode, $items, &$form,
         '#title' => $multiple ? '' : $title,
         '#description' => $multiple ? '' : $description,
         // Only the first widget should be required.
-        '#required' => $delta == 0 && $instance['required'],
+        '#required' => $delta === 0 && $instance['required'],
         '#delta' => $delta,
         '#weight' => $delta,
       );
@@ -233,7 +233,7 @@ function field_multiple_value_form($field, $instance, $langcode, $items, &$form,
         '#max_delta' => $max,
       );
       // Add 'add more' button, if not working with a programmed form.
-      if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED && empty($form_state['programmed'])) {
+      if ($field['cardinality'] === FIELD_CARDINALITY_UNLIMITED && empty($form_state['programmed'])) {
         $field_elements['add_more'] = array(
           '#type' => 'submit',
           '#name' => strtr($id_prefix, '-', '_') . '_add_more',
@@ -270,7 +270,7 @@ function theme_field_multiple_value_form($variables) {
   $element = $variables['element'];
   $output = '';
 
-  if ($element['#cardinality'] > 1 || $element['#cardinality'] == FIELD_CARDINALITY_UNLIMITED) {
+  if ($element['#cardinality'] > 1 || $element['#cardinality'] === FIELD_CARDINALITY_UNLIMITED) {
     $table_id = drupal_html_id($element['#field_name'] . '_values');
     $order_class = $element['#field_name'] . '-delta-order';
     $required = !empty($element['#required']) ? theme('form_required_marker', $variables) : '';
diff --git a/core/modules/field/field.info.inc b/core/modules/field/field.info.inc
index 78bc62e..a0e053c 100644
--- a/core/modules/field/field.info.inc
+++ b/core/modules/field/field.info.inc
@@ -305,7 +305,7 @@ function _field_info_prepare_instance($instance, $field) {
   $instance['settings'] += field_info_instance_settings($field['type']);
 
   // Set a default value for the instance.
-  if (field_behaviors_widget('default value', $instance) == FIELD_BEHAVIOR_DEFAULT && !isset($instance['default_value'])) {
+  if (field_behaviors_widget('default value', $instance) === FIELD_BEHAVIOR_DEFAULT && !isset($instance['default_value'])) {
     $instance['default_value'] = NULL;
   }
 
@@ -321,7 +321,7 @@ function _field_info_prepare_instance($instance, $field) {
   $view_modes = array_merge(array('default'), array_keys($entity_info['view modes']));
   $view_mode_settings = field_view_mode_settings($instance['entity_type'], $instance['bundle']);
   foreach ($view_modes as $view_mode) {
-    if ($view_mode == 'default' || !empty($view_mode_settings[$view_mode]['custom_settings'])) {
+    if ($view_mode === 'default' || !empty($view_mode_settings[$view_mode]['custom_settings'])) {
       if (!isset($instance['display'][$view_mode])) {
         $instance['display'][$view_mode] = array(
           'type' => 'hidden',
@@ -803,7 +803,7 @@ function field_info_max_weight($entity_type, $bundle, $context) {
 
   // Collect weights for fields.
   foreach (field_info_instances($entity_type, $bundle) as $instance) {
-    if ($context == 'form') {
+    if ($context === 'form') {
       $weights[] = $instance['widget']['weight'];
     }
     elseif (isset($instance['display'][$context]['weight'])) {
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index 2f3041c..7db9ed2 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -349,7 +349,7 @@ function field_cron() {
  * required if there are any active fields of that type.
  */
 function field_system_info_alter(&$info, $file, $type) {
-  if ($type == 'module' && module_hook($file->name, 'field_info')) {
+  if ($type === 'module' && module_hook($file->name, 'field_info')) {
     $fields = field_read_fields(array('module' => $file->name), array('include_deleted' => TRUE));
     if ($fields) {
       $info['required'] = TRUE;
@@ -509,7 +509,7 @@ function _field_filter_items($field, $items) {
  * user drag-n-drop reordering.
  */
 function _field_sort_items($field, $items) {
-  if (($field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED) && isset($items[0]['_weight'])) {
+  if (($field['cardinality'] > 1 || $field['cardinality'] === FIELD_CARDINALITY_UNLIMITED) && isset($items[0]['_weight'])) {
     usort($items, '_field_sort_items_helper');
     foreach ($items as $delta => $item) {
       if (is_array($items[$delta])) {
@@ -720,7 +720,7 @@ function _field_extra_fields_pre_render($elements) {
   $entity_type = $elements['#entity_type'];
   $bundle = $elements['#bundle'];
 
-  if (isset($elements['#type']) && $elements['#type'] == 'form') {
+  if (isset($elements['#type']) && $elements['#type'] === 'form') {
     $extra_fields = field_info_extra_fields($entity_type, $bundle, 'form');
     foreach ($extra_fields as $name => $settings) {
       if (isset($elements[$name])) {
@@ -1037,7 +1037,7 @@ function template_preprocess_field(&$variables, $hook) {
   // supposed to be hidden. If a theme implementation needs to print a hidden
   // label, it needs to supply a preprocess function that sets it to the
   // sanitized element title or whatever else is wanted in its place.
-  $variables['label_hidden'] = ($element['#label_display'] == 'hidden');
+  $variables['label_hidden'] = ($element['#label_display'] === 'hidden');
   $variables['label'] = $variables['label_hidden'] ? NULL : check_plain($element['#title']);
 
   // We want other preprocess functions and the theme implementation to have
@@ -1065,7 +1065,7 @@ function template_preprocess_field(&$variables, $hook) {
   );
   // Add a "clearfix" class to the wrapper since we float the label and the
   // field items in field.css if the label is inline.
-  if ($element['#label_display'] == 'inline') {
+  if ($element['#label_display'] === 'inline') {
     $variables['classes_array'][] = 'clearfix';
   }
 
diff --git a/core/modules/field/modules/field_sql_storage/field_sql_storage.install b/core/modules/field/modules/field_sql_storage/field_sql_storage.install
index 2229ef4..026c3bf 100644
--- a/core/modules/field/modules/field_sql_storage/field_sql_storage.install
+++ b/core/modules/field/modules/field_sql_storage/field_sql_storage.install
@@ -16,7 +16,7 @@ function field_sql_storage_schema() {
     $fields = field_read_fields(array(), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
     drupal_load('module', 'field_sql_storage');
     foreach ($fields as $field) {
-      if ($field['storage']['type'] == 'field_sql_storage') {
+      if ($field['storage']['type'] === 'field_sql_storage') {
         $schema += _field_sql_storage_schema($field);
       }
     }
diff --git a/core/modules/field/modules/field_sql_storage/field_sql_storage.module b/core/modules/field/modules/field_sql_storage/field_sql_storage.module
index 14e5745..9da9fdf 100644
--- a/core/modules/field/modules/field_sql_storage/field_sql_storage.module
+++ b/core/modules/field/modules/field_sql_storage/field_sql_storage.module
@@ -328,7 +328,7 @@ function field_sql_storage_field_storage_delete_field($field) {
  */
 function field_sql_storage_field_storage_load($entity_type, $entities, $age, $fields, $options) {
   $field_info = field_info_field_by_ids();
-  $load_current = $age == FIELD_LOAD_CURRENT;
+  $load_current = $age === FIELD_LOAD_CURRENT;
 
   foreach ($fields as $field_id => $ids) {
     $field = $field_info[$field_id];
@@ -354,7 +354,7 @@ function field_sql_storage_field_storage_load($entity_type, $entities, $age, $fi
         $delta_count[$row->entity_id][$row->langcode] = 0;
       }
 
-      if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta_count[$row->entity_id][$row->langcode] < $field['cardinality']) {
+      if ($field['cardinality'] === FIELD_CARDINALITY_UNLIMITED || $delta_count[$row->entity_id][$row->langcode] < $field['cardinality']) {
         $item = array();
         // For each column declared by the field, populate the item
         // from the prefixed database column.
@@ -390,7 +390,7 @@ function field_sql_storage_field_storage_write($entity_type, $entity, $op, $fiel
     $field_langcodes = array_intersect($all_langcodes, array_keys((array) $entity->$field_name));
 
     // Delete and insert, rather than update, in case a value was added.
-    if ($op == FIELD_STORAGE_UPDATE) {
+    if ($op === FIELD_STORAGE_UPDATE) {
       // Delete language codes present in the incoming $entity->$field_name.
       // Delete all language codes if $entity->$field_name is empty.
       $langcodes = !empty($entity->$field_name) ? $field_langcodes : $all_langcodes;
@@ -440,7 +440,7 @@ function field_sql_storage_field_storage_write($entity_type, $entity, $op, $fiel
           $revision_query->values($record);
         }
 
-        if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED && ++$delta_count == $field['cardinality']) {
+        if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED && ++$delta_count === $field['cardinality']) {
           break;
         }
       }
@@ -495,7 +495,7 @@ function field_sql_storage_field_storage_purge($entity_type, $entity, $field, $i
  * Implements hook_field_storage_query().
  */
 function field_sql_storage_field_storage_query(EntityFieldQuery $query) {
-  if ($query->age == FIELD_LOAD_CURRENT) {
+  if ($query->age === FIELD_LOAD_CURRENT) {
     $tablename_function = '_field_sql_storage_tablename';
     $id_key = 'entity_id';
   }
@@ -539,7 +539,7 @@ function field_sql_storage_field_storage_query(EntityFieldQuery $query) {
   // Is there a need to sort the query by property?
   $has_property_order = FALSE;
   foreach ($query->order as $order) {
-    if ($order['type'] == 'property') {
+    if ($order['type'] === 'property') {
       $has_property_order = TRUE;
     }
   }
@@ -561,18 +561,18 @@ function field_sql_storage_field_storage_query(EntityFieldQuery $query) {
 
   // Order the query.
   foreach ($query->order as $order) {
-    if ($order['type'] == 'entity') {
+    if ($order['type'] === 'entity') {
       $key = $order['specifier'];
       $select_query->orderBy("$field_base_table.$key", $order['direction']);
     }
-    elseif ($order['type'] == 'field') {
+    elseif ($order['type'] === 'field') {
       $specifier = $order['specifier'];
       $field = $specifier['field'];
       $table_alias = $table_aliases[$specifier['index']];
       $sql_field = "$table_alias." . _field_sql_storage_columnname($field['field_name'], $specifier['column']);
       $select_query->orderBy($sql_field, $order['direction']);
     }
-    elseif ($order['type'] == 'property') {
+    elseif ($order['type'] === 'property') {
       $select_query->orderBy("$entity_base_table." . $order['specifier'], $order['direction']);
     }
   }
@@ -691,7 +691,7 @@ function field_sql_storage_field_attach_rename_bundle($entity_type, $bundle_old,
   $instances = field_read_instances(array('entity_type' => $entity_type, 'bundle' => $bundle_new), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
   foreach ($instances as $instance) {
     $field = field_info_field_by_id($instance['field_id']);
-    if ($field['storage']['type'] == 'field_sql_storage') {
+    if ($field['storage']['type'] === 'field_sql_storage') {
       $table_name = _field_sql_storage_tablename($field);
       $revision_name = _field_sql_storage_revision_tablename($field);
       db_update($table_name)
diff --git a/core/modules/field/modules/field_sql_storage/field_sql_storage.test b/core/modules/field/modules/field_sql_storage/field_sql_storage.test
index 87c388a..1cc98fc 100644
--- a/core/modules/field/modules/field_sql_storage/field_sql_storage.test
+++ b/core/modules/field/modules/field_sql_storage/field_sql_storage.test
@@ -165,7 +165,7 @@ class FieldSqlStorageTestCase extends DrupalWebTestCase {
     foreach ($results as $row) {
       $this->assertEqual($row->{$this->field_name . '_value'}, $rev_values[$row->revision_id][$row->delta]['value'], "Value {$row->delta} for revision {$row->revision_id} stored correctly");
       unset($rev_values[$row->revision_id][$row->delta]);
-      if (count($rev_values[$row->revision_id]) == 1) {
+      if (count($rev_values[$row->revision_id]) === 1) {
         unset($rev_values[$row->revision_id]);
       }
     }
diff --git a/core/modules/field/modules/list/list.module b/core/modules/field/modules/list/list.module
index c2bff2a..8bffc71 100644
--- a/core/modules/field/modules/list/list.module
+++ b/core/modules/field/modules/list/list.module
@@ -77,7 +77,7 @@ function list_field_settings_form($field, $instance, $has_data) {
       );
 
       $description = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
-      if ($field['type'] == 'list_integer' || $field['type'] == 'list_float') {
+      if ($field['type'] === 'list_integer' || $field['type'] === 'list_float') {
         $description .= '<br/>' . t('The key is the stored value, and must be numeric. The label will be used in displayed values and edit forms.');
         $description .= '<br/>' . t('The label is optional: if a line contains a single number, it will be used as key and label.');
         $description .= '<br/>' . t('Lists of labels are also accepted (one label per line), only if the field does not hold any values yet. Numeric keys will be automatically generated from the positions in the list.');
@@ -132,10 +132,10 @@ function list_field_settings_form($field, $instance, $has_data) {
   }
 
   // Alter the description for allowed values depending on the widget type.
-  if ($instance['widget']['type'] == 'options_onoff') {
+  if ($instance['widget']['type'] === 'options_onoff') {
     $form['allowed_values']['#description'] .= '<p>' . t("For a 'single on/off checkbox' widget, define the 'off' value first, then the 'on' value in the <strong>Allowed values</strong> section. Note that the checkbox will be labeled with the label of the 'on' value.") . '</p>';
   }
-  elseif ($instance['widget']['type'] == 'options_buttons') {
+  elseif ($instance['widget']['type'] === 'options_buttons') {
     $form['allowed_values']['#description'] .= '<p>' . t("The 'checkboxes/radio buttons' widget will display checkboxes if the <em>Number of values</em> option is greater than 1 for this field, otherwise radios will be displayed.") . '</p>';
   }
   $form['allowed_values']['#description'] .= '<p>' . t('Allowed HTML tags in labels: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())) . '</p>';
@@ -161,7 +161,7 @@ function list_allowed_values_setting_validate($element, &$form_state) {
   $field = $element['#field'];
   $has_data = $element['#field_has_data'];
   $field_type = $field['type'];
-  $generate_keys = ($field_type == 'list_integer' || $field_type == 'list_float') && !$has_data;
+  $generate_keys = ($field_type === 'list_integer' || $field_type === 'list_float') && !$has_data;
 
   $values = list_extract_allowed_values($element['#value'], $field['type'], $generate_keys);
 
@@ -171,15 +171,15 @@ function list_allowed_values_setting_validate($element, &$form_state) {
   else {
     // Check that keys are valid for the field type.
     foreach ($values as $key => $value) {
-      if ($field_type == 'list_integer' && !preg_match('/^-?\d+$/', $key)) {
+      if ($field_type === 'list_integer' && !preg_match('/^-?\d+$/', $key)) {
         form_error($element, t('Allowed values list: keys must be integers.'));
         break;
       }
-      if ($field_type == 'list_float' && !is_numeric($key)) {
+      if ($field_type === 'list_float' && !is_numeric($key)) {
         form_error($element, t('Allowed values list: each key must be a valid integer or decimal.'));
         break;
       }
-      elseif ($field_type == 'list_text' && drupal_strlen($key) > 255) {
+      elseif ($field_type === 'list_text' && drupal_strlen($key) > 255) {
         form_error($element, t('Allowed values list: each key must be a string at most 255 characters long.'));
         break;
       }
@@ -282,9 +282,9 @@ function list_extract_allowed_values($string, $field_type, $generate_keys) {
     }
     // Otherwise see if we can use the value as the key. Detecting true integer
     // strings takes a little trick.
-    elseif ($field_type == 'list_text'
-    || ($field_type == 'list_float' && is_numeric($text))
-    || ($field_type == 'list_integer' && is_numeric($text) && (float) $text == intval($text))) {
+    elseif ($field_type === 'list_text'
+    || ($field_type === 'list_float' && is_numeric($text))
+    || ($field_type === 'list_integer' && is_numeric($text) && (float) $text === intval($text))) {
       $key = $value = $text;
       $explicit_keys = TRUE;
     }
@@ -300,7 +300,7 @@ function list_extract_allowed_values($string, $field_type, $generate_keys) {
 
     // Float keys are represented as strings and need to be disambiguated
     // ('.5' is '0.5').
-    if ($field_type == 'list_float' && is_numeric($key)) {
+    if ($field_type === 'list_float' && is_numeric($key)) {
       $key = (string) (float) $key;
     }
 
@@ -341,7 +341,7 @@ function list_allowed_values_string($values) {
  * Implements hook_field_update_forbid().
  */
 function list_field_update_forbid($field, $prior_field, $has_data) {
-  if ($field['module'] == 'list' && $has_data) {
+  if ($field['module'] === 'list' && $has_data) {
     // Forbid any update that removes allowed values with actual data.
     $lost_keys = array_diff(array_keys($prior_field['settings']['allowed_values']), array_keys($field['settings']['allowed_values']));
     if (_list_values_in_use($field, $lost_keys)) {
diff --git a/core/modules/field/modules/number/number.module b/core/modules/field/modules/number/number.module
index 1b9a300..88a7495 100644
--- a/core/modules/field/modules/number/number.module
+++ b/core/modules/field/modules/number/number.module
@@ -55,7 +55,7 @@ function number_field_settings_form($field, $instance, $has_data) {
   $settings = $field['settings'];
   $form = array();
 
-  if ($field['type'] == 'number_decimal') {
+  if ($field['type'] === 'number_decimal') {
     $form['precision'] = array(
       '#type' => 'select',
       '#title' => t('Precision'),
@@ -145,7 +145,7 @@ function number_field_validate($entity_type, $entity, $field, $instance, $langco
  * Implements hook_field_presave().
  */
 function number_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
-  if ($field['type'] == 'number_decimal') {
+  if ($field['type'] === 'number_decimal') {
     // Let PHP round the value to ensure consistent behavior across storage
     // backends.
     foreach ($items as $delta => $item) {
@@ -212,7 +212,7 @@ function number_field_formatter_settings_form($field, $instance, $view_mode, $fo
   $display = $instance['display'][$view_mode];
   $settings = $display['settings'];
 
-  if ($display['type'] == 'number_decimal' || $display['type'] == 'number_integer') {
+  if ($display['type'] === 'number_decimal' || $display['type'] === 'number_integer') {
     $options = array(
       ''  => t('<none>'),
       '.' => t('Decimal point'),
@@ -226,7 +226,7 @@ function number_field_formatter_settings_form($field, $instance, $view_mode, $fo
       '#default_value' => $settings['thousand_separator'],
     );
 
-    if ($display['type'] == 'number_decimal') {
+    if ($display['type'] === 'number_decimal') {
       $element['decimal_separator'] = array(
         '#type' => 'select',
         '#title' => t('Decimal marker'),
@@ -260,7 +260,7 @@ function number_field_formatter_settings_summary($field, $instance, $view_mode)
   $settings = $display['settings'];
 
   $summary = array();
-  if ($display['type'] == 'number_decimal' || $display['type'] == 'number_integer') {
+  if ($display['type'] === 'number_decimal' || $display['type'] === 'number_integer') {
     $summary[] = number_format(1234.1234567890, $settings['scale'], $settings['decimal_separator'], $settings['thousand_separator']);
     if ($settings['prefix_suffix']) {
       $summary[] = t('Display with prefix and suffix.');
@@ -326,9 +326,9 @@ function number_field_widget_form(&$form, &$form_state, $field, $instance, $lang
     '#default_value' => $value,
     // Allow a slightly larger size that the field length to allow for some
     // configurations where all characters won't fit in input field.
-    '#size' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] + 4 : 12,
+    '#size' => $field['type'] === 'number_decimal' ? $field['settings']['precision'] + 4 : 12,
     // Allow two extra characters for signed values and decimal separator.
-    '#maxlength' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] + 2 : 10,
+    '#maxlength' => $field['type'] === 'number_decimal' ? $field['settings']['precision'] + 2 : 10,
   );
 
   // Set the step for floating point and decimal numbers.
diff --git a/core/modules/field/modules/options/options.module b/core/modules/field/modules/options/options.module
index 04b88d8..94dfc6b 100644
--- a/core/modules/field/modules/options/options.module
+++ b/core/modules/field/modules/options/options.module
@@ -74,7 +74,7 @@ function options_field_widget_form(&$form, &$form_state, $field, $instance, $lan
   $value_key = key($field['columns']);
 
   $type = str_replace('options_', '', $instance['widget']['type']);
-  $multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
+  $multiple = $field['cardinality'] > 1 || $field['cardinality'] === FIELD_CARDINALITY_UNLIMITED;
   $required = $element['#required'];
   $has_value = isset($items[0][$value_key]);
   $properties = _options_properties($type, $multiple, $required, $has_value);
@@ -98,7 +98,7 @@ function options_field_widget_form(&$form, &$form_state, $field, $instance, $lan
 
     case 'buttons':
       // If required and there is one single option, preselect it.
-      if ($required && count($options) == 1) {
+      if ($required && count($options) === 1) {
         reset($options);
         $default_value = array(key($options));
       }
@@ -124,7 +124,7 @@ function options_field_widget_form(&$form, &$form_state, $field, $instance, $lan
       $on_value = array_shift($keys);
       $element += array(
         '#type' => 'checkbox',
-        '#default_value' => (isset($default_value[0]) && $default_value[0] == $on_value) ? 1 : 0,
+        '#default_value' => (isset($default_value[0]) && $default_value[0] === $on_value) ? 1 : 0,
         '#on_value' => $on_value,
         '#off_value' => $off_value,
       );
@@ -151,7 +151,7 @@ function options_field_widget_form(&$form, &$form_state, $field, $instance, $lan
  */
 function options_field_widget_settings_form($field, $instance) {
   $form = array();
-  if ($instance['widget']['type'] == 'options_onoff') {
+  if ($instance['widget']['type'] === 'options_onoff') {
     $form['display_label'] = array(
       '#type' => 'checkbox',
       '#title' => t('Use field label instead of the "On value" as label'),
@@ -166,7 +166,7 @@ function options_field_widget_settings_form($field, $instance) {
  * Form element validation handler for options element.
  */
 function options_field_widget_validate($element, &$form_state) {
-  if ($element['#required'] && $element['#value'] == '_none') {
+  if ($element['#required'] && $element['#value'] === '_none') {
     form_error($element, t('!name field is required.', array('!name' => $element['#title'])));
   }
   // Transpose selections from field => delta to delta => field, turning
@@ -302,12 +302,12 @@ function _options_form_to_storage($element) {
   $properties = $element['#properties'];
 
   // On/off checkbox: transform '0 / 1' into the 'on / off' values.
-  if ($element['#type'] == 'checkbox') {
+  if ($element['#type'] === 'checkbox') {
     $values = array($values[0] ? $element['#on_value'] : $element['#off_value']);
   }
 
   // Filter out the 'none' option. Use a strict comparison, because
-  // 0 == 'any string'.
+  // 0 === 'any string'.
   if ($properties['empty_option']) {
     $index = array_search('_none', $values, TRUE);
     if ($index !== FALSE) {
@@ -406,7 +406,7 @@ function theme_options_none($variables) {
       break;
 
     case 'options_select':
-      $output = ($option == 'option_none' ? t('- None -') : t('- Select a value -'));
+      $output = ($option === 'option_none' ? t('- None -') : t('- Select a value -'));
       break;
   }
 
diff --git a/core/modules/field/modules/text/text.js b/core/modules/field/modules/text/text.js
index 8527355..f8d480f 100644
--- a/core/modules/field/modules/text/text.js
+++ b/core/modules/field/modules/text/text.js
@@ -17,7 +17,7 @@ Drupal.behaviors.textSummary = {
 
         // Create a placeholder label when the field cardinality is
         // unlimited or greater than 1.
-        if ($fullLabel.length == 0) {
+        if ($fullLabel.length === 0) {
           $fullLabel = $('<label></label>').prependTo($full);
         }
 
@@ -36,7 +36,7 @@ Drupal.behaviors.textSummary = {
         ).appendTo($summaryLabel);
 
         // If no summary is set, hide the summary field.
-        if ($(this).find('.text-summary').val() == '') {
+        if ($(this).find('.text-summary').val() === '') {
           $link.click();
         }
         return;
diff --git a/core/modules/field/modules/text/text.module b/core/modules/field/modules/text/text.module
index 985fa9b..90a70f8 100644
--- a/core/modules/field/modules/text/text.module
+++ b/core/modules/field/modules/text/text.module
@@ -64,7 +64,7 @@ function text_field_settings_form($field, $instance, $has_data) {
 
   $form = array();
 
-  if ($field['type'] == 'text') {
+  if ($field['type'] === 'text') {
     $form['max_length'] = array(
       '#type' => 'number',
       '#title' => t('Maximum length'),
@@ -96,7 +96,7 @@ function text_field_instance_settings_form($field, $instance) {
       t('Filtered text (user selects text format)'),
     ),
   );
-  if ($field['type'] == 'text_with_summary') {
+  if ($field['type'] === 'text_with_summary') {
     $form['display_summary'] = array(
       '#type' => 'checkbox',
       '#title' => t('Summary input'),
@@ -157,7 +157,7 @@ function text_field_load($entity_type, $entities, $field, $instances, $langcode,
       // by formatters if needed.
       if (empty($instances[$id]['settings']['text_processing']) || filter_format_allowcache($item['format'])) {
         $items[$id][$delta]['safe_value'] = isset($item['value']) ? _text_sanitize($instances[$id], $langcode, $item, 'value') : '';
-        if ($field['type'] == 'text_with_summary') {
+        if ($field['type'] === 'text_with_summary') {
           $items[$id][$delta]['safe_summary'] = isset($item['summary']) ? _text_sanitize($instances[$id], $langcode, $item, 'summary') : '';
         }
       }
@@ -262,7 +262,7 @@ function text_field_formatter_view($entity_type, $entity, $field, $instance, $la
     case 'text_trimmed':
       foreach ($items as $delta => $item) {
         $output = _text_sanitize($instance, $langcode, $item, 'value');
-        if ($display['type'] == 'text_trimmed') {
+        if ($display['type'] === 'text_trimmed') {
           $output = text_summary($output, $instance['settings']['text_processing'] ? $item['format'] : NULL, $display['settings']['trim_length']);
         }
         $element[$delta] = array('#markup' => $output);
@@ -356,7 +356,7 @@ function text_summary($text, $format = NULL, $size = NULL) {
   $delimiter = strpos($text, '<!--break-->');
 
   // If the size is zero, and there is no delimiter, the entire body is the summary.
-  if ($size == 0 && $delimiter === FALSE) {
+  if ($size === 0 && $delimiter === FALSE) {
     return $text;
   }
 
@@ -474,7 +474,7 @@ function text_field_widget_settings_form($field, $instance) {
   $widget = $instance['widget'];
   $settings = $widget['settings'];
 
-  if ($widget['type'] == 'text_textfield') {
+  if ($widget['type'] === 'text_textfield') {
     $form['size'] = array(
       '#type' => 'number',
       '#title' => t('Size of textfield'),
diff --git a/core/modules/field/tests/field.test b/core/modules/field/tests/field.test
index 8f94063..9ccc38e 100644
--- a/core/modules/field/tests/field.test
+++ b/core/modules/field/tests/field.test
@@ -2745,7 +2745,7 @@ class FieldTranslationsTestCase extends FieldTestCase {
     $this->field['translatable'] = FALSE;
     field_update_field($this->field);
     $available_langcodes = field_available_languages($this->entity_type, $this->field);
-    $this->assertTrue(count($available_langcodes) == 1 && $available_langcodes[0] === LANGUAGE_NOT_SPECIFIED, t('For untranslatable fields only LANGUAGE_NOT_SPECIFIED is available.'));
+    $this->assertTrue(count($available_langcodes) === 1 && $available_langcodes[0] === LANGUAGE_NOT_SPECIFIED, t('For untranslatable fields only LANGUAGE_NOT_SPECIFIED is available.'));
   }
 
   /**
@@ -2890,7 +2890,7 @@ class FieldTranslationsTestCase extends FieldTestCase {
     foreach ($field_translations as $langcode => $items) {
       $result = TRUE;
       foreach ($items as $delta => $item) {
-        $result = $result && $item['value'] == $entity->{$this->field_name}[$langcode][$delta]['value'];
+        $result = $result && $item['value'] === $entity->{$this->field_name}[$langcode][$delta]['value'];
       }
       $this->assertTrue($result, t('%language translation correctly handled.', array('%language' => $langcode)));
     }
@@ -2948,7 +2948,7 @@ class FieldTranslationsTestCase extends FieldTestCase {
     $display_langcodes = field_language($entity_type, $entity, NULL, $requested_langcode);
     foreach ($instances as $instance) {
       $field_name = $instance['field_name'];
-      $this->assertTrue($display_langcodes[$field_name] == LANGUAGE_NOT_SPECIFIED, t('The display language for field %field_name is %language.', array('%field_name' => $field_name, '%language' => LANGUAGE_NOT_SPECIFIED)));
+      $this->assertTrue($display_langcodes[$field_name] === LANGUAGE_NOT_SPECIFIED, t('The display language for field %field_name is %language.', array('%field_name' => $field_name, '%language' => LANGUAGE_NOT_SPECIFIED)));
     }
 
     // Test multiple-fields display languages for translatable entities.
@@ -3018,7 +3018,7 @@ class FieldTranslationsTestCase extends FieldTestCase {
     $field_name = $this->field['field_name'];
     $entity = field_test_entity_test_load($eid, $evid);
     foreach ($available_langcodes as $langcode => $value) {
-      $passed = isset($entity->{$field_name}[$langcode]) && $entity->{$field_name}[$langcode][0]['value'] == $value + 1;
+      $passed = isset($entity->{$field_name}[$langcode]) && $entity->{$field_name}[$langcode][0]['value'] === $value + 1;
       $this->assertTrue($passed, t('The @language translation for revision @revision was correctly stored', array('@language' => $langcode, '@revision' => $entity->ftvid)));
     }
   }
@@ -3089,7 +3089,7 @@ class FieldBulkDeleteTestCase extends FieldTestCase {
       foreach ($invocations as $argument) {
         $found = FALSE;
         foreach ($actual_invocations as $actual_arguments) {
-          if ($actual_arguments[1] == $argument) {
+          if ($actual_arguments[1] === $argument) {
             $found = TRUE;
             break;
           }
diff --git a/core/modules/field/tests/field_test.field.inc b/core/modules/field/tests/field_test.field.inc
index cc76a99..8f54856 100644
--- a/core/modules/field/tests/field_test.field.inc
+++ b/core/modules/field/tests/field_test.field.inc
@@ -49,7 +49,7 @@ function field_test_field_info() {
  * Implements hook_field_update_forbid().
  */
 function field_test_field_update_forbid($field, $prior_field, $has_data) {
-  if ($field['type'] == 'test_field' && $field['settings']['unchangeable'] != $prior_field['settings']['unchangeable']) {
+  if ($field['type'] === 'test_field' && $field['settings']['unchangeable'] != $prior_field['settings']['unchangeable']) {
     throw new FieldException("field_test 'unchangeable' setting cannot be changed'");
   }
 }
@@ -110,7 +110,7 @@ function field_test_field_validate($entity_type, $entity, $field, $instance, $la
   field_test_memorize(__FUNCTION__, $args);
 
   foreach ($items as $delta => $item) {
-    if ($item['value'] == -1) {
+    if ($item['value'] === -1) {
       $errors[$field['field_name']][$langcode][$delta][] = array(
         'error' => 'field_test_invalid',
         'message' => t('%name does not accept the value -1.', array('%name' => $instance['label'])),
@@ -348,7 +348,7 @@ function field_test_field_formatter_prepare_view($entity_type, $entities, $field
   foreach ($items as $id => $item) {
     // To keep the test non-intrusive, only act on the
     // 'field_test_with_prepare_view' formatter.
-    if ($displays[$id]['type'] == 'field_test_with_prepare_view') {
+    if ($displays[$id]['type'] === 'field_test_with_prepare_view') {
       foreach ($item as $delta => $value) {
         // Don't add anything on empty values.
         if ($value) {
@@ -404,7 +404,7 @@ function field_test_default_value($entity_type, $entity, $field, $instance) {
  * Implements hook_field_access().
  */
 function field_test_field_access($op, $field, $entity_type, $entity, $account) {
-  if ($field['field_name'] == "field_no_{$op}_access") {
+  if ($field['field_name'] === "field_no_{$op}_access") {
     return FALSE;
   }
   return TRUE;
diff --git a/core/modules/field/tests/field_test.install b/core/modules/field/tests/field_test.install
index 5957561..9368d79 100644
--- a/core/modules/field/tests/field_test.install
+++ b/core/modules/field/tests/field_test.install
@@ -117,7 +117,7 @@ function field_test_schema() {
  * Implements hook_field_schema().
  */
 function field_test_field_schema($field) {
-  if ($field['type'] == 'test_field') {
+  if ($field['type'] === 'test_field') {
     return array(
       'columns' => array(
         'value' => array(
diff --git a/core/modules/field/tests/field_test.module b/core/modules/field/tests/field_test.module
index 90e25c8..be9bb81 100644
--- a/core/modules/field/tests/field_test.module
+++ b/core/modules/field/tests/field_test.module
@@ -232,7 +232,7 @@ function field_test_field_attach_view_alter(&$output, $context) {
  */
 function field_test_field_widget_properties_alter(&$widget, $context) {
   // Make the alter_test_text field 42 characters for nodes and comments.
-  if (in_array($context['entity_type'], array('node', 'comment')) && ($context['field']['field_name'] == 'alter_test_text')) {
+  if (in_array($context['entity_type'], array('node', 'comment')) && ($context['field']['field_name'] === 'alter_test_text')) {
     $widget['settings']['size'] = 42;
   }
 }
@@ -242,7 +242,7 @@ function field_test_field_widget_properties_alter(&$widget, $context) {
  */
 function field_test_field_widget_properties_user_alter(&$widget, $context) {
   // Always use buttons for the alter_test_options field on user forms.
-  if ($context['field']['field_name'] == 'alter_test_options') {
+  if ($context['field']['field_name'] === 'alter_test_options') {
     $widget['type'] = 'options_buttons';
   }
 }
diff --git a/core/modules/field/tests/field_test.storage.inc b/core/modules/field/tests/field_test.storage.inc
index eaa0851..bf5953e 100644
--- a/core/modules/field/tests/field_test.storage.inc
+++ b/core/modules/field/tests/field_test.storage.inc
@@ -49,7 +49,7 @@ function field_test_field_storage_details($field) {
 function field_test_field_storage_details_alter(&$details, $field) {
 
   // For testing, storage details are changed only because of the field name.
-  if ($field['field_name'] == 'field_test_change_my_details') {
+  if ($field['field_name'] === 'field_test_change_my_details') {
     $columns = array();
     foreach ((array) $field['columns'] as $column_name => $attributes) {
       $columns[$column_name] = $column_name;
@@ -83,7 +83,7 @@ function _field_test_storage_data($data = NULL) {
 function field_test_field_storage_load($entity_type, $entities, $age, $fields, $options) {
   $data = _field_test_storage_data();
 
-  $load_current = $age == FIELD_LOAD_CURRENT;
+  $load_current = $age === FIELD_LOAD_CURRENT;
 
   foreach ($fields as $field_id => $ids) {
     $field = field_info_field_by_id($field_id);
@@ -92,13 +92,13 @@ function field_test_field_storage_load($entity_type, $entities, $age, $fields, $
     $sub_table = $load_current ? 'current' : 'revisions';
     $delta_count = array();
     foreach ($field_data[$sub_table] as $row) {
-      if ($row->type == $entity_type && (!$row->deleted || $options['deleted'])) {
+      if ($row->type === $entity_type && (!$row->deleted || $options['deleted'])) {
         if (($load_current && in_array($row->entity_id, $ids)) || (!$load_current && in_array($row->revision_id, $ids))) {
           if (in_array($row->langcode, field_available_languages($entity_type, $field))) {
             if (!isset($delta_count[$row->entity_id][$row->langcode])) {
               $delta_count[$row->entity_id][$row->langcode] = 0;
             }
-            if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta_count[$row->entity_id][$row->langcode] < $field['cardinality']) {
+            if ($field['cardinality'] === FIELD_CARDINALITY_UNLIMITED || $delta_count[$row->entity_id][$row->langcode] < $field['cardinality']) {
               $item = array();
               foreach ($field['columns'] as $column => $attributes) {
                 $item[$column] = $row->{$column};
@@ -130,19 +130,19 @@ function field_test_field_storage_write($entity_type, $entity, $op, $fields) {
     $field_langcodes = array_intersect($all_langcodes, array_keys((array) $entity->$field_name));
 
     // Delete and insert, rather than update, in case a value was added.
-    if ($op == FIELD_STORAGE_UPDATE) {
+    if ($op === FIELD_STORAGE_UPDATE) {
       // Delete languages present in the incoming $entity->$field_name.
       // Delete all languages if $entity->$field_name is empty.
       $langcodes = !empty($entity->$field_name) ? $field_langcodes : $all_langcodes;
       if ($langcodes) {
         foreach ($field_data['current'] as $key => $row) {
-          if ($row->type == $entity_type && $row->entity_id == $id && in_array($row->langcode, $langcodes)) {
+          if ($row->type === $entity_type && $row->entity_id === $id && in_array($row->langcode, $langcodes)) {
             unset($field_data['current'][$key]);
           }
         }
         if (isset($vid)) {
           foreach ($field_data['revisions'] as $key => $row) {
-            if ($row->type == $entity_type && $row->revision_id == $vid) {
+            if ($row->type === $entity_type && $row->revision_id === $vid) {
               unset($field_data['revisions'][$key]);
             }
           }
@@ -173,7 +173,7 @@ function field_test_field_storage_write($entity_type, $entity, $op, $fields) {
           $field_data['revisions'][] = $row;
         }
 
-        if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED && ++$delta_count == $field['cardinality']) {
+        if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED && ++$delta_count === $field['cardinality']) {
           break;
         }
       }
@@ -210,7 +210,7 @@ function field_test_field_storage_purge($entity_type, $entity, $field, $instance
   $field_data = &$data[$field['id']];
   foreach (array('current', 'revisions') as $sub_table) {
     foreach ($field_data[$sub_table] as $key => $row) {
-      if ($row->type == $entity_type && $row->entity_id == $id) {
+      if ($row->type === $entity_type && $row->entity_id === $id) {
         unset($field_data[$sub_table][$key]);
       }
     }
@@ -230,7 +230,7 @@ function field_test_field_storage_delete_revision($entity_type, $entity, $fields
     $field_data = &$data[$field_id];
     foreach (array('current', 'revisions') as $sub_table) {
       foreach ($field_data[$sub_table] as $key => $row) {
-        if ($row->type == $entity_type && $row->entity_id == $id && $row->revision_id == $vid) {
+        if ($row->type === $entity_type && $row->entity_id === $id && $row->revision_id === $vid) {
           unset($field_data[$sub_table][$key]);
         }
       }
@@ -246,7 +246,7 @@ function field_test_field_storage_delete_revision($entity_type, $entity, $fields
 function field_test_field_storage_query($field_id, $conditions, $count, &$cursor = NULL, $age) {
   $data = _field_test_storage_data();
 
-  $load_current = $age == FIELD_LOAD_CURRENT;
+  $load_current = $age === FIELD_LOAD_CURRENT;
 
   $field = field_info_field_by_id($field_id);
   $field_columns = array_keys($field['columns']);
@@ -269,7 +269,7 @@ function field_test_field_storage_query($field_id, $conditions, $count, &$cursor
       break;
     }
 
-    if ($row->field_id == $field['id']) {
+    if ($row->field_id === $field['id']) {
       $match = TRUE;
       $condition_deleted = FALSE;
       // Add conditions.
@@ -280,7 +280,7 @@ function field_test_field_storage_query($field_id, $conditions, $count, &$cursor
         }
         switch ($operator) {
           case '=':
-            $match = $match && $row->{$column} == $value;
+            $match = $match && $row->{$column} === $value;
             break;
           case '<>':
           case '<':
@@ -306,7 +306,7 @@ function field_test_field_storage_query($field_id, $conditions, $count, &$cursor
             break;
         }
         // Track condition on 'deleted'.
-        if ($column == 'deleted') {
+        if ($column === 'deleted') {
           $condition_deleted = TRUE;
         }
       }
@@ -351,8 +351,8 @@ function field_test_field_storage_query($field_id, $conditions, $count, &$cursor
  * Sorts by entity type and entity id.
  */
 function _field_test_field_storage_query_sort_helper($a, $b) {
-  if ($a->type == $b->type) {
-    if ($a->entity_id == $b->entity_id) {
+  if ($a->type === $b->type) {
+    if ($a->entity_id === $b->entity_id) {
       return 0;
     }
     else {
@@ -368,7 +368,7 @@ function _field_test_field_storage_query_sort_helper($a, $b) {
  * Implements hook_field_storage_create_field().
  */
 function field_test_field_storage_create_field($field) {
-  if ($field['storage']['type'] == 'field_test_storage_failure') {
+  if ($field['storage']['type'] === 'field_test_storage_failure') {
     throw new Exception('field_test_storage_failure engine always fails to create fields');
   }
 
@@ -408,7 +408,7 @@ function field_test_field_storage_delete_instance($instance) {
   $field_data = &$data[$field['id']];
   foreach (array('current', 'revisions') as $sub_table) {
     foreach ($field_data[$sub_table] as &$row) {
-      if ($row->bundle == $instance['bundle']) {
+      if ($row->bundle === $instance['bundle']) {
         $row->deleted = TRUE;
       }
     }
@@ -434,11 +434,11 @@ function field_test_field_attach_rename_bundle($bundle_old, $bundle_new) {
   $instances = field_read_instances(array('bundle' => $bundle_new), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
   foreach ($instances as $field_name => $instance) {
     $field = field_info_field_by_id($instance['field_id']);
-    if ($field['storage']['type'] == 'field_test_storage') {
+    if ($field['storage']['type'] === 'field_test_storage') {
       $field_data = &$data[$field['id']];
       foreach (array('current', 'revisions') as $sub_table) {
         foreach ($field_data[$sub_table] as &$row) {
-          if ($row->bundle == $bundle_old) {
+          if ($row->bundle === $bundle_old) {
             $row->bundle = $bundle_new;
           }
         }
@@ -457,11 +457,11 @@ function field_test_field_attach_delete_bundle($entity_type, $bundle, $instances
 
   foreach ($instances as $field_name => $instance) {
     $field = field_info_field($field_name);
-    if ($field['storage']['type'] == 'field_test_storage') {
+    if ($field['storage']['type'] === 'field_test_storage') {
       $field_data = &$data[$field['id']];
       foreach (array('current', 'revisions') as $sub_table) {
         foreach ($field_data[$sub_table] as &$row) {
-          if ($row->bundle == $bundle_old) {
+          if ($row->bundle === $bundle_old) {
             $row->deleted = TRUE;
           }
         }
diff --git a/core/modules/field_ui/field_ui.admin.inc b/core/modules/field_ui/field_ui.admin.inc
index c22fe21..36f7251 100644
--- a/core/modules/field_ui/field_ui.admin.inc
+++ b/core/modules/field_ui/field_ui.admin.inc
@@ -120,7 +120,7 @@ function field_ui_display_overview_row_region($row) {
   switch ($row['#row_type']) {
     case 'field':
     case 'extra_field':
-      return ($row['format']['type']['#value'] == 'hidden' ? 'hidden' : 'visible');
+      return ($row['format']['type']['#value'] === 'hidden' ? 'hidden' : 'visible');
   }
 }
 
@@ -267,7 +267,7 @@ function theme_field_ui_table($variables) {
       foreach (element_children($element) as $cell_key) {
         $child = &$element[$cell_key];
         // Do not render a cell for children of #type 'value'.
-        if (!(isset($child['#type']) && $child['#type'] == 'value')) {
+        if (!(isset($child['#type']) && $child['#type'] === 'value')) {
           $cell = array('data' => drupal_render($child));
           if (isset($child['#cell_attributes'])) {
             $cell += $child['#cell_attributes'];
@@ -1048,7 +1048,7 @@ function field_ui_display_overview_form($form, &$form_state, $entity_type, $bund
       '#field_name' => $name,
     );
 
-    if ($form_state['formatter_settings_edit'] == $name) {
+    if ($form_state['formatter_settings_edit'] === $name) {
       // We are currently editing this field's formatter settings. Display the
       // settings form and submit buttons.
       $table[$name]['format']['settings_edit_form'] = array();
@@ -1174,7 +1174,7 @@ function field_ui_display_overview_form($form, &$form_state, $entity_type, $bund
   $form['fields'] = $table;
 
   // Custom display settings.
-  if ($view_mode == 'default') {
+  if ($view_mode === 'default') {
     $form['modes'] = array(
       '#type' => 'fieldset',
       '#title' => t('Custom display settings'),
@@ -1365,12 +1365,12 @@ function field_ui_display_overview_form_submit($form, &$form_state) {
   foreach ($form['#extra'] as $name) {
     $bundle_settings['extra_fields']['display'][$name][$view_mode] = array(
       'weight' => $form_values['fields'][$name]['weight'],
-      'visible' => $form_values['fields'][$name]['type'] == 'visible',
+      'visible' => $form_values['fields'][$name]['type'] === 'visible',
     );
   }
 
   // Save view modes data.
-  if ($view_mode == 'default') {
+  if ($view_mode === 'default') {
     $entity_info = entity_get_info($entity_type);
     foreach ($form_values['view_modes_custom'] as $view_mode_name => $value) {
       // Display a message for each view mode newly configured to use custom
@@ -1535,7 +1535,7 @@ function field_ui_existing_field_options($entity_type, $bundle) {
   foreach (field_info_instances() as $existing_entity_type => $bundles) {
     foreach ($bundles as $existing_bundle => $instances) {
       // No need to look in the current bundle.
-      if (!($existing_bundle == $bundle && $existing_entity_type == $entity_type)) {
+      if (!($existing_bundle === $bundle && $existing_entity_type === $entity_type)) {
         foreach ($instances as $instance) {
           $field = field_info_field($instance['field_name']);
           // Don't show
@@ -1912,7 +1912,7 @@ function field_ui_field_edit_form($form, &$form_state, $instance) {
   }
 
   // Add handling for default value if not provided by any other module.
-  if (field_behaviors_widget('default value', $instance) == FIELD_BEHAVIOR_DEFAULT && empty($instance['default_value_function'])) {
+  if (field_behaviors_widget('default value', $instance) === FIELD_BEHAVIOR_DEFAULT && empty($instance['default_value_function'])) {
     $form['instance']['default_value_widget'] = field_ui_default_value_widget($field, $instance, $form, $form_state);
   }
 
@@ -1936,7 +1936,7 @@ function field_ui_field_edit_form($form, &$form_state, $instance) {
 
   // Build the configurable field values.
   $description = t('Maximum number of values users can enter for this field.');
-  if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) {
+  if (field_behaviors_widget('multiple values', $instance) === FIELD_BEHAVIOR_DEFAULT) {
     $description .= '<br/>' . t("'Unlimited' will provide an 'Add more' button so the users can add as many values as they like.");
   }
   $form['field']['cardinality'] = array(
diff --git a/core/modules/field_ui/field_ui.api.php b/core/modules/field_ui/field_ui.api.php
index b6c8aee..c8e39fc 100644
--- a/core/modules/field_ui/field_ui.api.php
+++ b/core/modules/field_ui/field_ui.api.php
@@ -74,7 +74,7 @@ function hook_field_instance_settings_form($field, $instance) {
       t('Filtered text (user selects text format)'),
     ),
   );
-  if ($field['type'] == 'text_with_summary') {
+  if ($field['type'] === 'text_with_summary') {
     $form['display_summary'] = array(
       '#type' => 'select',
       '#title' => t('Display summary'),
@@ -108,7 +108,7 @@ function hook_field_widget_settings_form($field, $instance) {
   $widget = $instance['widget'];
   $settings = $widget['settings'];
 
-  if ($widget['type'] == 'text_textfield') {
+  if ($widget['type'] === 'text_textfield') {
     $form['size'] = array(
       '#type' => 'number',
       '#title' => t('Size of textfield'),
@@ -154,7 +154,7 @@ function hook_field_formatter_settings_form($field, $instance, $view_mode, $form
 
   $element = array();
 
-  if ($display['type'] == 'text_trimmed' || $display['type'] == 'text_summary_or_trimmed') {
+  if ($display['type'] === 'text_trimmed' || $display['type'] === 'text_summary_or_trimmed') {
     $element['trim_length'] = array(
       '#title' => t('Length'),
       '#type' => 'number',
@@ -192,7 +192,7 @@ function hook_field_formatter_settings_summary($field, $instance, $view_mode) {
 
   $summary = '';
 
-  if ($display['type'] == 'text_trimmed' || $display['type'] == 'text_summary_or_trimmed') {
+  if ($display['type'] === 'text_trimmed' || $display['type'] === 'text_summary_or_trimmed') {
     $summary = t('Length: @chars chars', array('@chars' => $settings['trim_length']));
   }
 
diff --git a/core/modules/field_ui/field_ui.js b/core/modules/field_ui/field_ui.js
index 6de5c15..0536032 100644
--- a/core/modules/field_ui/field_ui.js
+++ b/core/modules/field_ui/field_ui.js
@@ -56,7 +56,7 @@ Drupal.fieldUIFieldOverview = {
         });
 
       $this.bind('change keyup', function (e, updateText) {
-        var updateText = (typeof updateText == 'undefined' ? true : updateText);
+        var updateText = (typeof updateText === 'undefined' ? true : updateText);
         var selectedField = this.options[this.selectedIndex].value;
         var selectedFieldType = (selectedField in fields ? fields[selectedField].type : null);
         var selectedFieldWidget = (selectedField in fields ? fields[selectedField].widget : null);
@@ -83,7 +83,7 @@ Drupal.fieldUIFieldOverview = {
 jQuery.fn.fieldUIPopulateOptions = function (options, selected) {
   return this.each(function () {
     var disabled = false;
-    if (options.length == 0) {
+    if (options.length === 0) {
       options = [this.initialValue];
       disabled = true;
     }
@@ -97,7 +97,7 @@ jQuery.fn.fieldUIPopulateOptions = function (options, selected) {
     jQuery.each(options, function (value, text) {
       // Figure out which value should be selected. The 'selected' param
       // takes precedence.
-      var is_selected = ((typeof selected != 'undefined' && value == selected) || (typeof selected == 'undefined' && text == previousSelectedText));
+      var is_selected = ((typeof selected != 'undefined' && value === selected) || (typeof selected === 'undefined' && text === previousSelectedText));
       html += '<option value="' + value + '"' + (is_selected ? ' selected="selected"' : '') + '>' + text + '</option>';
     });
 
@@ -204,14 +204,14 @@ Drupal.fieldUIOverview = {
       var $this = $(this);
       // If the dragged row is in this region, but above the message row, swap
       // it down one space.
-      if ($this.prev('tr').get(0) == rowObject.group[rowObject.group.length - 1]) {
+      if ($this.prev('tr').get(0) === rowObject.group[rowObject.group.length - 1]) {
         // Prevent a recursion problem when using the keyboard to move rows up.
-        if ((rowObject.method != 'keyboard' || rowObject.direction == 'down')) {
+        if ((rowObject.method != 'keyboard' || rowObject.direction === 'down')) {
           rowObject.swap('after', this);
         }
       }
       // This region has become empty.
-      if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length == 0) {
+      if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length === 0) {
         $this.removeClass('region-populated').addClass('region-empty');
       }
       // This region has become populated.
@@ -298,7 +298,7 @@ Drupal.fieldUIDisplayOverview.field.prototype = {
    * Returns the region corresponding to the current form values of the row.
    */
   getRegion: function () {
-    return (this.$formatSelect.val() == 'hidden') ? 'hidden' : 'visible';
+    return (this.$formatSelect.val() === 'hidden') ? 'hidden' : 'visible';
   },
 
   /**
@@ -325,7 +325,7 @@ Drupal.fieldUIDisplayOverview.field.prototype = {
     var currentValue = this.$formatSelect.val();
     switch (region) {
       case 'visible':
-        if (currentValue == 'hidden') {
+        if (currentValue === 'hidden') {
           // Restore the formatter back to the default formatter. Pseudo-fields do
           // not have default formatters, we just return to 'visible' for those.
           var value = (this.defaultFormatter != undefined) ? this.defaultFormatter : 'visible';
diff --git a/core/modules/field_ui/field_ui.module b/core/modules/field_ui/field_ui.module
index c75005a..b233218 100644
--- a/core/modules/field_ui/field_ui.module
+++ b/core/modules/field_ui/field_ui.module
@@ -179,8 +179,8 @@ function field_ui_menu() {
               // rules for the bundle admin pages.
               'access callback' => '_field_ui_view_mode_menu_access',
               'access arguments' => array_merge(array($entity_type, $bundle_arg, $view_mode, $access['access callback']), $access['access arguments']),
-              'type' => ($view_mode == 'default' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK),
-              'weight' => ($view_mode == 'default' ? -10 : $weight++),
+              'type' => ($view_mode === 'default' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK),
+              'weight' => ($view_mode === 'default' ? -10 : $weight++),
               'file' => 'field_ui.admin.inc',
             );
           }
@@ -255,7 +255,7 @@ function _field_ui_view_mode_menu_access($entity_type, $bundle, $view_mode, $acc
   // setting for the view mode.
   $bundle = field_extract_bundle($entity_type, $bundle);
   $view_mode_settings = field_view_mode_settings($entity_type, $bundle);
-  $visibility = ($view_mode == 'default') || !empty($view_mode_settings[$view_mode]['custom_settings']);
+  $visibility = ($view_mode === 'default') || !empty($view_mode_settings[$view_mode]['custom_settings']);
 
   // Then, determine access according to the $access parameter. This duplicates
   // part of _menu_check_access().
@@ -269,8 +269,8 @@ function _field_ui_view_mode_menu_access($entity_type, $bundle, $view_mode, $acc
     else {
       // As call_user_func_array() is quite slow and user_access is a very
       // common callback, it is worth making a special case for it.
-      if ($access_callback == 'user_access') {
-        return (count($args) == 1) ? user_access($args[0]) : user_access($args[0], $args[1]);
+      if ($access_callback === 'user_access') {
+        return (count($args) === 1) ? user_access($args[0]) : user_access($args[0], $args[1]);
       }
       else {
         return call_user_func_array($access_callback, $args);
diff --git a/core/modules/field_ui/field_ui.test b/core/modules/field_ui/field_ui.test
index 9b71064..718e44b 100644
--- a/core/modules/field_ui/field_ui.test
+++ b/core/modules/field_ui/field_ui.test
@@ -301,12 +301,12 @@ class FieldUIManageFieldsTestCase extends FieldUITestCase {
     _field_info_collate_fields_reset();
     // Assert field settings.
     $field = field_info_field($field_name);
-    $this->assertTrue($field['settings']['test_field_setting'] == $string, t('Field settings were found.'));
+    $this->assertTrue($field['settings']['test_field_setting'] === $string, t('Field settings were found.'));
 
     // Assert instance and widget settings.
     $instance = field_info_instance($entity_type, $field_name, $bundle);
-    $this->assertTrue($instance['settings']['test_instance_setting'] == $string, t('Field instance settings were found.'));
-    $this->assertTrue($instance['widget']['settings']['test_widget_setting'] == $string, t('Field widget settings were found.'));
+    $this->assertTrue($instance['settings']['test_instance_setting'] === $string, t('Field instance settings were found.'));
+    $this->assertTrue($instance['widget']['settings']['test_widget_setting'] === $string, t('Field widget settings were found.'));
   }
 
   /**
diff --git a/core/modules/file/file.api.php b/core/modules/file/file.api.php
index 7f20d83..8df8c14 100644
--- a/core/modules/file/file.api.php
+++ b/core/modules/file/file.api.php
@@ -27,7 +27,7 @@
  * @see hook_field_access().
  */
 function hook_file_download_access($field, $entity_type, $entity) {
-  if ($entity_type == 'node') {
+  if ($entity_type === 'node') {
     return node_access('view', $entity);
   }
 }
diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc
index a1a2ef9..73630a0 100644
--- a/core/modules/file/file.field.inc
+++ b/core/modules/file/file.field.inc
@@ -351,7 +351,7 @@ function file_field_delete_file($item, $field, $entity_type, $id, $count = 1) {
   // are not yet associated with any content at all.
   $file = (object) $item;
   $file_usage = file_usage_list($file);
-  if ($file->status == 0 || !empty($file_usage['file'])) {
+  if ($file->status === 0 || !empty($file_usage['file'])) {
     file_usage_delete($file, 'file', $entity_type, $id, $count);
     return file_delete($file);
   }
@@ -480,7 +480,7 @@ function file_field_widget_form(&$form, &$form_state, $field, $instance, $langco
     '#extended' => TRUE,
   );
 
-  if ($field['cardinality'] == 1) {
+  if ($field['cardinality'] === 1) {
     // Set the default value.
     $element['#default_value'] = !empty($items) ? $items[0] : $defaults;
     // If there's only one field, return it as delta 0.
@@ -499,11 +499,11 @@ function file_field_widget_form(&$form, &$form_state, $field, $instance, $langco
     }
     // And then add one more empty row for new uploads except when this is a
     // programmed form as it is not necessary.
-    if (($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta < $field['cardinality']) && empty($form_state['programmed'])) {
+    if (($field['cardinality'] === FIELD_CARDINALITY_UNLIMITED || $delta < $field['cardinality']) && empty($form_state['programmed'])) {
       $elements[$delta] = $element;
       $elements[$delta]['#default_value'] = $defaults;
       $elements[$delta]['#weight'] = $delta;
-      $elements[$delta]['#required'] = ($element['#required'] && $delta == 0);
+      $elements[$delta]['#required'] = ($element['#required'] && $delta === 0);
     }
     // The group of elements all-together need some extra functionality
     // after building up the full list (like draggable table rows).
@@ -856,7 +856,7 @@ function theme_file_widget_multiple($variables) {
   $rows = array();
   foreach ($widgets as $key => &$widget) {
     // Save the uploading row for last.
-    if ($widget['#file'] == FALSE) {
+    if ($widget['#file'] === FALSE) {
       $widget['#title'] = $element['#file_upload_title'];
       $widget['#description'] = $element['#file_upload_description'];
       continue;
@@ -866,7 +866,7 @@ function theme_file_widget_multiple($variables) {
     // "operations" column.
     $operations_elements = array();
     foreach (element_children($widget) as $sub_key) {
-      if (isset($widget[$sub_key]['#type']) && $widget[$sub_key]['#type'] == 'submit') {
+      if (isset($widget[$sub_key]['#type']) && $widget[$sub_key]['#type'] === 'submit') {
         hide($widget[$sub_key]);
         $operations_elements[] = &$widget[$sub_key];
       }
@@ -953,7 +953,7 @@ function theme_file_upload_help($variables) {
   if (isset($upload_validators['file_validate_image_resolution'])) {
     $max = $upload_validators['file_validate_image_resolution'][0];
     $min = $upload_validators['file_validate_image_resolution'][1];
-    if ($min && $max && $min == $max) {
+    if ($min && $max && $min === $max) {
       $descriptions[] = t('Images must be exactly !size pixels.', array('!size' => '<strong>' . $max . '</strong>'));
     }
     elseif ($min && $max) {
diff --git a/core/modules/file/file.install b/core/modules/file/file.install
index dff930b..8d6bf56 100644
--- a/core/modules/file/file.install
+++ b/core/modules/file/file.install
@@ -52,7 +52,7 @@ function file_requirements($phase) {
   $requirements = array();
 
   // Check the server's ability to indicate upload progress.
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     $implementation = file_progress_implementation();
     $apache = strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== FALSE;
     $fastcgi = strpos($_SERVER['SERVER_SOFTWARE'], 'mod_fastcgi') !== FALSE || strpos($_SERVER["SERVER_SOFTWARE"], 'mod_fcgi') !== FALSE;
@@ -77,12 +77,12 @@ function file_requirements($phase) {
       $description = t('Your server is capable of displaying file upload progress, but does not have the required libraries. It is recommended to install the <a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress library</a> (preferred) or to install <a href="http://php.net/apc">APC</a>.');
       $severity = REQUIREMENT_INFO;
     }
-    elseif ($implementation == 'apc') {
+    elseif ($implementation === 'apc') {
       $value = t('Enabled (<a href="http://php.net/manual/apc.configuration.php#ini.apc.rfc1867">APC RFC1867</a>)');
       $description = t('Your server is capable of displaying file upload progress using APC RFC1867. Note that only one upload at a time is supported. It is recommended to use the <a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress library</a> if possible.');
       $severity = REQUIREMENT_OK;
     }
-    elseif ($implementation == 'uploadprogress') {
+    elseif ($implementation === 'uploadprogress') {
       $value = t('Enabled (<a href="http://pecl.php.net/package/uploadprogress">PECL uploadprogress</a>)');
       $severity = REQUIREMENT_OK;
     }
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index a2a5a80..bae95fb 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -147,7 +147,7 @@ function file_file_download($uri, $field_type = 'file') {
   // temporary files where the host entity has not yet been saved (for example,
   // an image preview on a node/add form) in which case, allow download by the
   // file's owner.
-  if (empty($references) && ($file->status == FILE_STATUS_PERMANENT || $file->uid != $user->uid)) {
+  if (empty($references) && ($file->status === FILE_STATUS_PERMANENT || $file->uid != $user->uid)) {
       return;
   }
 
@@ -172,7 +172,7 @@ function file_file_download($uri, $field_type = 'file') {
 
           // Find the field item with the matching URI.
           foreach ($field_items as $field_item) {
-            if ($field_item['uri'] == $uri) {
+            if ($field_item['uri'] === $uri) {
               $field = field_info_field($field_name);
               break;
             }
@@ -301,14 +301,14 @@ function file_ajax_progress($key) {
   );
 
   $implementation = file_progress_implementation();
-  if ($implementation == 'uploadprogress') {
+  if ($implementation === 'uploadprogress') {
     $status = uploadprogress_get_info($key);
     if (isset($status['bytes_uploaded']) && !empty($status['bytes_total'])) {
       $progress['message'] = t('Uploading... (@current of @total)', array('@current' => format_size($status['bytes_uploaded']), '@total' => format_size($status['bytes_total'])));
       $progress['percentage'] = round(100 * $status['bytes_uploaded'] / $status['bytes_total']);
     }
   }
-  elseif ($implementation == 'apc') {
+  elseif ($implementation === 'apc') {
     $status = apc_fetch('upload_' . $key);
     if (isset($status['current']) && !empty($status['total'])) {
       $progress['message'] = t('Uploading... (@current of @total)', array('@current' => format_size($status['current']), '@total' => format_size($status['total'])));
@@ -390,7 +390,7 @@ function file_managed_file_process($element, &$form_state, $form) {
 
   // Force the progress indicator for the remove button to be either 'none' or
   // 'throbber', even if the upload button is using something else.
-  $ajax_settings['progress']['type'] = ($element['#progress_indicator'] == 'none') ? 'none' : 'throbber';
+  $ajax_settings['progress']['type'] = ($element['#progress_indicator'] === 'none') ? 'none' : 'throbber';
   $ajax_settings['progress']['message'] = NULL;
   $ajax_settings['effect'] = 'none';
   $element['remove_button'] = array(
@@ -410,10 +410,10 @@ function file_managed_file_process($element, &$form_state, $form) {
   );
 
   // Add progress bar support to the upload if possible.
-  if ($element['#progress_indicator'] == 'bar' && $implementation = file_progress_implementation()) {
+  if ($element['#progress_indicator'] === 'bar' && $implementation = file_progress_implementation()) {
     $upload_progress_key = mt_rand();
 
-    if ($implementation == 'uploadprogress') {
+    if ($implementation === 'uploadprogress') {
       $element['UPLOAD_IDENTIFIER'] = array(
         '#type' => 'hidden',
         '#value' => $upload_progress_key,
@@ -423,7 +423,7 @@ function file_managed_file_process($element, &$form_state, $form) {
         '#weight' => -20,
       );
     }
-    elseif ($implementation == 'apc') {
+    elseif ($implementation === 'apc') {
       $element['APC_UPLOAD_PROGRESS'] = array(
         '#type' => 'hidden',
         '#value' => $upload_progress_key,
@@ -556,7 +556,7 @@ function file_managed_file_validate(&$element, &$form_state) {
   $clicked_button = end($form_state['triggering_element']['#parents']);
   if ($clicked_button != 'remove_button' && !empty($element['fid']['#value'])) {
     if ($file = file_load($element['fid']['#value'])) {
-      if ($file->status == FILE_STATUS_PERMANENT) {
+      if ($file->status === FILE_STATUS_PERMANENT) {
         $references = file_usage_list($file);
         if (empty($references)) {
           form_error($element, t('The file used in the !name field may not be referenced.', array('!name' => $element['#title'])));
@@ -595,10 +595,10 @@ function file_managed_file_submit($form, &$form_state) {
   // the form are processed by file_managed_file_value() regardless of which
   // button was clicked. Action is needed here for the remove button, because we
   // only remove a file in response to its remove button being clicked.
-  if ($button_key == 'remove_button') {
+  if ($button_key === 'remove_button') {
     // If it's a temporary file we can safely remove it immediately, otherwise
     // it's up to the implementing module to clean up files that are in use.
-    if ($element['#file'] && $element['#file']->status == 0) {
+    if ($element['#file'] && $element['#file']->status === 0) {
       file_delete($element['#file']);
     }
     // Update both $form_state['values'] and $form_state['input'] to reflect
@@ -1003,7 +1003,7 @@ function file_get_file_references($file, $field = NULL, $age = FIELD_LOAD_REVISI
   $fields = isset($field) ? array($field['field_name'] => $field) : field_info_fields();
 
   foreach ($fields as $field_name => $file_field) {
-    if ((empty($field_type) || $file_field['type'] == $field_type) && !isset($references[$field_name])) {
+    if ((empty($field_type) || $file_field['type'] === $field_type) && !isset($references[$field_name])) {
       // Get each time this file is used within a field.
       $query = new EntityFieldQuery();
       $query
diff --git a/core/modules/file/tests/file.test b/core/modules/file/tests/file.test
index 05083fc..ea940c8 100644
--- a/core/modules/file/tests/file.test
+++ b/core/modules/file/tests/file.test
@@ -218,7 +218,7 @@ class FileFieldTestCase extends DrupalWebTestCase {
    */
   function assertFileIsPermanent($file, $message = NULL) {
     $message = isset($message) ? $message : t('File %file is permanent.', array('%file' => $file->uri));
-    $this->assertTrue($file->status == FILE_STATUS_PERMANENT, $message);
+    $this->assertTrue($file->status === FILE_STATUS_PERMANENT, $message);
   }
 }
 
@@ -446,7 +446,7 @@ class FileFieldWidgetTestCase extends FileFieldTestCase {
           foreach ($buttons as $i => $button) {
             $key = $i >= $remaining ? $i - $remaining : $i;
             $check_field_name = $field_name2;
-            if ($current_field_name == $field_name && $i < $remaining) {
+            if ($current_field_name === $field_name && $i < $remaining) {
               $check_field_name = $field_name;
             }
 
@@ -484,12 +484,12 @@ class FileFieldWidgetTestCase extends FileFieldTestCase {
           // correct name.
           $upload_button_name = $current_field_name . '_' . LANGUAGE_NOT_SPECIFIED . '_' . $remaining . '_upload_button';
           $buttons = $this->xpath('//input[@type="submit" and @value="Upload" and @name=:name]', array(':name' => $upload_button_name));
-          $this->assertTrue(is_array($buttons) && count($buttons) == 1, t('The upload button is displayed with the correct name (JSMode=%type).', array('%type' => $type)));
+          $this->assertTrue(is_array($buttons) && count($buttons) === 1, t('The upload button is displayed with the correct name (JSMode=%type).', array('%type' => $type)));
 
           // Ensure only at most one button per field is displayed.
           $buttons = $this->xpath('//input[@type="submit" and @value="Upload"]');
-          $expected = $current_field_name == $field_name ? 1 : 2;
-          $this->assertTrue(is_array($buttons) && count($buttons) == $expected, t('After removing a file, only one "Upload" button for each possible field is displayed (JSMode=%type).', array('%type' => $type)));
+          $expected = $current_field_name === $field_name ? 1 : 2;
+          $this->assertTrue(is_array($buttons) && count($buttons) === $expected, t('After removing a file, only one "Upload" button for each possible field is displayed (JSMode=%type).', array('%type' => $type)));
         }
       }
 
diff --git a/core/modules/filter/filter.admin.inc b/core/modules/filter/filter.admin.inc
index 40a5eab..ed0fbbb 100644
--- a/core/modules/filter/filter.admin.inc
+++ b/core/modules/filter/filter.admin.inc
@@ -20,7 +20,7 @@ function filter_admin_overview($form) {
   foreach ($formats as $id => $format) {
     // Check whether this is the fallback text format. This format is available
     // to all roles and cannot be disabled via the admin interface.
-    $form['formats'][$id]['#is_fallback'] = ($id == $fallback_format);
+    $form['formats'][$id]['#is_fallback'] = ($id === $fallback_format);
     if ($form['formats'][$id]['#is_fallback']) {
       $form['formats'][$id]['name'] = array('#markup' => drupal_placeholder($format->name));
       $roles_markup = drupal_placeholder(t('All roles may use this format'));
@@ -116,7 +116,7 @@ function filter_admin_format_page($format = NULL) {
  * @see filter_admin_format_form_submit()
  */
 function filter_admin_format_form($form, &$form_state, $format) {
-  $is_fallback = ($format->format == filter_fallback_format());
+  $is_fallback = ($format->format === filter_fallback_format());
 
   $form['#format'] = $format;
   $form['#tree'] = TRUE;
diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module
index 5fe4caa..071370e 100644
--- a/core/modules/filter/filter.module
+++ b/core/modules/filter/filter.module
@@ -250,7 +250,7 @@ function filter_format_save($format) {
       ->execute();
   }
 
-  if ($return == SAVED_NEW) {
+  if ($return === SAVED_NEW) {
     module_invoke_all('filter_format_insert', $format);
   }
   else {
@@ -448,7 +448,7 @@ function filter_formats_reset() {
  */
 function filter_get_roles_by_format($format) {
   // Handle the fallback format upfront (all roles have access to this format).
-  if ($format->format == filter_fallback_format()) {
+  if ($format->format === filter_fallback_format()) {
     return user_roles();
   }
   // Do not list any roles if the permission does not exist.
@@ -988,7 +988,7 @@ function filter_access($format, $account = NULL) {
   }
   // Handle special cases up front. All users have access to the fallback
   // format.
-  if ($format->format == filter_fallback_format()) {
+  if ($format->format === filter_fallback_format()) {
     return TRUE;
   }
   // Check the permission if one exists; otherwise, we have a non-existent
@@ -1105,7 +1105,7 @@ function filter_dom_serialize($dom_document) {
  */
 function filter_dom_serialize_escape_cdata_element($dom_document, $dom_element, $comment_start = '//', $comment_end = '') {
   foreach ($dom_element->childNodes as $node) {
-    if (get_class($node) == 'DOMCdataSection') {
+    if (get_class($node) === 'DOMCdataSection') {
       // See drupal_get_js().  This code is more or less duplicated there.
       $embed_prefix = "\n<!--{$comment_start}--><![CDATA[{$comment_start} ><!--{$comment_end}\n";
       $embed_suffix = "\n{$comment_start}--><!]]>{$comment_end}\n";
@@ -1449,9 +1449,9 @@ function _filter_url($text, $filter) {
     $open_tag = '';
 
     for ($i = 0; $i < count($chunks); $i++) {
-      if ($chunk_type == 'text') {
+      if ($chunk_type === 'text') {
         // Only process this text if there are no unclosed $ignore_tags.
-        if ($open_tag == '') {
+        if ($open_tag === '') {
           // If there is a match, inject a link into this chunk via the callback
           // function contained in $task.
           $chunks[$i] = preg_replace_callback($pattern, $task, $chunks[$i]);
@@ -1461,7 +1461,7 @@ function _filter_url($text, $filter) {
       }
       else {
         // Only process this tag if there are no unclosed $ignore_tags.
-        if ($open_tag == '') {
+        if ($open_tag === '') {
           // Check whether this tag is contained in $ignore_tags.
           if (preg_match("`<($ignore_tags)(?:\s|>)`i", $chunks[$i], $matches)) {
             $open_tag = $matches[1];
@@ -1615,7 +1615,7 @@ function _filter_autop($text) {
   $output = '';
   foreach ($chunks as $i => $chunk) {
     if ($i % 2) {
-      $comment = (substr($chunk, 0, 4) == '<!--');
+      $comment = (substr($chunk, 0, 4) === '<!--');
       if ($comment) {
         // Nothing to do, this is a comment.
         $output .= $chunk;
@@ -1631,7 +1631,7 @@ function _filter_autop($text) {
         }
       }
       // Only allow a matching tag to close it.
-      elseif (!$open && $ignoretag == $tag) {
+      elseif (!$open && $ignoretag === $tag) {
         $ignore = FALSE;
         $ignoretag = '';
       }
diff --git a/core/modules/filter/filter.test b/core/modules/filter/filter.test
index 8226054..c1f0730 100644
--- a/core/modules/filter/filter.test
+++ b/core/modules/filter/filter.test
@@ -264,7 +264,7 @@ class FilterAdminTestCase extends DrupalWebTestCase {
     $plain = 'plain_text';
 
     // Check that the fallback format exists and cannot be disabled.
-    $this->assertTrue($plain == filter_fallback_format(), t('The fallback format is set to plain text.'));
+    $this->assertTrue($plain === filter_fallback_format(), t('The fallback format is set to plain text.'));
     $this->drupalGet('admin/config/content/formats');
     $this->assertNoRaw('admin/config/content/formats/' . $plain . '/disable', t('Disable link for the fallback format not found.'));
     $this->drupalGet('admin/config/content/formats/' . $plain . '/disable');
@@ -306,11 +306,11 @@ class FilterAdminTestCase extends DrupalWebTestCase {
     $result = db_query('SELECT * FROM {filter} WHERE format = :format ORDER BY weight ASC', array(':format' => $filtered));
     $filters = array();
     foreach ($result as $filter) {
-      if ($filter->name == $second_filter || $filter->name == $first_filter) {
+      if ($filter->name === $second_filter || $filter->name === $first_filter) {
         $filters[] = $filter;
       }
     }
-    $this->assertTrue(($filters[0]->name == $second_filter && $filters[1]->name == $first_filter), t('Order confirmed in database.'));
+    $this->assertTrue(($filters[0]->name === $second_filter && $filters[1]->name === $first_filter), t('Order confirmed in database.'));
 
     // Add format.
     $edit = array();
diff --git a/core/modules/forum/forum.admin.inc b/core/modules/forum/forum.admin.inc
index 5fd396f..6737781 100644
--- a/core/modules/forum/forum.admin.inc
+++ b/core/modules/forum/forum.admin.inc
@@ -6,7 +6,7 @@
  */
 function forum_form_main($type, $edit = array()) {
   $edit = (array) $edit;
-  if ((isset($_POST['op']) && $_POST['op'] == t('Delete')) || !empty($_POST['confirm'])) {
+  if ((isset($_POST['op']) && $_POST['op'] === t('Delete')) || !empty($_POST['confirm'])) {
     return drupal_get_form('forum_confirm_delete', $edit['tid']);
   }
   switch ($type) {
@@ -70,7 +70,7 @@ function forum_form_forum($form, &$form_state, $edit = array()) {
  * Process forum form and container form submissions.
  */
 function forum_form_submit($form, &$form_state) {
-  if ($form['form_id']['#value'] == 'forum_form_container') {
+  if ($form['form_id']['#value'] === 'forum_form_container') {
     $container = TRUE;
     $type = t('forum container');
   }
@@ -305,10 +305,10 @@ function _forum_parent_select($tid, $title, $child_type) {
       }
     }
   }
-  if ($child_type == 'container') {
+  if ($child_type === 'container') {
     $description = t('Containers are usually placed at the top (root) level, but may also be placed inside another container or forum.');
   }
-  elseif ($child_type == 'forum') {
+  elseif ($child_type === 'forum') {
     $description = t('Forums may be placed at the top (root) level, or inside another container or forum.');
   }
 
diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module
index 180f1c9..6df7bf9 100644
--- a/core/modules/forum/forum.module
+++ b/core/modules/forum/forum.module
@@ -165,7 +165,7 @@ function forum_menu_local_tasks_alter(&$data, $router_item, $root_path) {
   global $user;
 
   // Add action link to 'node/add/forum' on 'forum' sub-pages.
-  if ($root_path == 'forum' || $root_path == 'forum/%') {
+  if ($root_path === 'forum' || $root_path === 'forum/%') {
     $tid = (isset($router_item['page_arguments'][0]) ? $router_item['page_arguments'][0]->tid : 0);
     $forum_term = forum_forum_load($tid);
     if ($forum_term) {
@@ -225,7 +225,7 @@ function forum_entity_info_alter(&$info) {
     // iteration of all vocabularies once per cache clearing isn't a big deal,
     // and is done as part of taxonomy_entity_info() anyway.
     foreach (taxonomy_vocabulary_get_names() as $machine_name => $vocabulary) {
-      if ($vid == $vocabulary->vid) {
+      if ($vid === $vocabulary->vid) {
         $info['taxonomy_term']['bundles'][$machine_name]['uri callback'] = 'forum_uri';
       }
     }
@@ -264,7 +264,7 @@ function forum_node_view($node, $view_mode) {
   $vid = variable_get('forum_nav_vocabulary', 0);
   $vocabulary = taxonomy_vocabulary_load($vid);
   if (_forum_node_check_node_type($node)) {
-    if ($view_mode == 'full' && node_is_page($node)) {
+    if ($view_mode === 'full' && node_is_page($node)) {
       // Breadcrumb navigation
       $breadcrumb[] = l(t('Home'), NULL);
       $breadcrumb[] = l($vocabulary->name, 'forum');
@@ -520,7 +520,7 @@ function forum_comment_delete($comment) {
  * Implements hook_field_storage_pre_insert().
  */
 function forum_field_storage_pre_insert($entity_type, $entity, &$skip_fields) {
-  if ($entity_type == 'node' && $entity->status && _forum_node_check_node_type($entity)) {
+  if ($entity_type === 'node' && $entity->status && _forum_node_check_node_type($entity)) {
     $query = db_insert('forum_index')->fields(array('nid', 'title', 'tid', 'sticky', 'created', 'comment_count', 'last_comment_timestamp'));
     foreach ($entity->taxonomy_forums as $language) {
       foreach ($language as $item) {
@@ -545,7 +545,7 @@ function forum_field_storage_pre_insert($entity_type, $entity, &$skip_fields) {
 function forum_field_storage_pre_update($entity_type, $entity, &$skip_fields) {
   $first_call = &drupal_static(__FUNCTION__, array());
 
-  if ($entity_type == 'node' && $entity->status && _forum_node_check_node_type($entity)) {
+  if ($entity_type === 'node' && $entity->status && _forum_node_check_node_type($entity)) {
     // We don't maintain data for old revisions, so clear all previous values
     // from the table. Since this hook runs once per field, per object, make
     // sure we only wipe values once.
@@ -579,7 +579,7 @@ function forum_field_storage_pre_update($entity_type, $entity, &$skip_fields) {
  */
 function forum_form_taxonomy_form_vocabulary_alter(&$form, &$form_state, $form_id) {
   $vid = variable_get('forum_nav_vocabulary', 0);
-  if (isset($form['vid']['#value']) && $form['vid']['#value'] == $vid) {
+  if (isset($form['vid']['#value']) && $form['vid']['#value'] === $vid) {
     $form['help_forum_vocab'] = array(
       '#markup' => t('This is the designated forum vocabulary. Some of the normal vocabulary options have been removed.'),
       '#weight' => -1,
@@ -598,7 +598,7 @@ function forum_form_taxonomy_form_vocabulary_alter(&$form, &$form_state, $form_i
  */
 function forum_form_taxonomy_form_term_alter(&$form, &$form_state, $form_id) {
   $vid = variable_get('forum_nav_vocabulary', 0);
-  if (isset($form['vid']['#value']) && $form['vid']['#value'] == $vid) {
+  if (isset($form['vid']['#value']) && $form['vid']['#value'] === $vid) {
     // Hide multiple parents select from forum terms.
     $form['relations']['parent']['#access'] = FALSE;
   }
@@ -875,7 +875,7 @@ function forum_get_topics($tid, $sortby, $forum_per_page) {
 
   $order = _forum_get_topic_order($sortby);
   for ($i = 0; $i < count($forum_topic_list_header); $i++) {
-    if ($forum_topic_list_header[$i]['field'] == $order['field']) {
+    if ($forum_topic_list_header[$i]['field'] === $order['field']) {
       $forum_topic_list_header[$i]['sort'] = $order['sort'];
     }
   }
@@ -973,7 +973,7 @@ function forum_get_topics($tid, $sortby, $forum_per_page) {
  * Implements hook_preprocess_block().
  */
 function forum_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'forum') {
+  if ($variables['block']->module === 'forum') {
     $variables['attributes_array']['role'] = 'navigation';
   }
 }
@@ -1006,7 +1006,7 @@ function template_preprocess_forums(&$variables) {
   if ($variables['parents']) {
     $variables['parents'] = array_reverse($variables['parents']);
     foreach ($variables['parents'] as $p) {
-      if ($p->tid == $variables['tid']) {
+      if ($p->tid === $variables['tid']) {
         $title = $p->name;
       }
       else {
@@ -1077,7 +1077,7 @@ function template_preprocess_forum_list(&$variables) {
     $variables['forums'][$id]->link = url("forum/$forum->tid");
     $variables['forums'][$id]->name = check_plain($forum->name);
     $variables['forums'][$id]->is_container = !empty($forum->container);
-    $variables['forums'][$id]->zebra = $row % 2 == 0 ? 'odd' : 'even';
+    $variables['forums'][$id]->zebra = $row % 2 === 0 ? 'odd' : 'even';
     $row++;
 
     $variables['forums'][$id]->new_text = '';
@@ -1131,7 +1131,7 @@ function template_preprocess_forum_topic_list(&$variables) {
     $row = 0;
     foreach ($variables['topics'] as $id => $topic) {
       $variables['topics'][$id]->icon = theme('forum_icon', array('new_posts' => $topic->new, 'num_posts' => $topic->comment_count, 'comment_mode' => $topic->comment_mode, 'sticky' => $topic->sticky, 'first_new' => $topic->first_new));
-      $variables['topics'][$id]->zebra = $row % 2 == 0 ? 'odd' : 'even';
+      $variables['topics'][$id]->zebra = $row % 2 === 0 ? 'odd' : 'even';
       $row++;
 
       // We keep the actual tid in forum table, if it's different from the
@@ -1194,12 +1194,12 @@ function template_preprocess_forum_icon(&$variables) {
     $variables['icon_title'] = $variables['new_posts'] ? t('New comments') : t('Normal topic');
   }
 
-  if ($variables['comment_mode'] == COMMENT_NODE_CLOSED || $variables['comment_mode'] == COMMENT_NODE_HIDDEN) {
+  if ($variables['comment_mode'] === COMMENT_NODE_CLOSED || $variables['comment_mode'] === COMMENT_NODE_HIDDEN) {
     $variables['icon_class'] = 'closed';
     $variables['icon_title'] = t('Closed topic');
   }
 
-  if ($variables['sticky'] == 1) {
+  if ($variables['sticky'] === 1) {
     $variables['icon_class'] = 'sticky';
     $variables['icon_title'] = t('Sticky topic');
   }
diff --git a/core/modules/forum/forum.test b/core/modules/forum/forum.test
index 6eb0d23..864b29f 100644
--- a/core/modules/forum/forum.test
+++ b/core/modules/forum/forum.test
@@ -344,7 +344,7 @@ class ForumTestCase extends DrupalWebTestCase {
     // Create forum.
     $this->drupalPost('admin/structure/forum/add/' . $type, $edit, t('Save'));
     $this->assertResponse(200);
-    $type = ($type == 'container') ? 'forum container' : 'forum';
+    $type = ($type === 'container') ? 'forum container' : 'forum';
     $this->assertRaw(t('Created new @type %term.', array('%term' => $name, '@type' => t($type))), t(ucfirst($type) . ' was created'));
 
     // Verify forum.
@@ -354,7 +354,7 @@ class ForumTestCase extends DrupalWebTestCase {
     // Verify forum hierarchy.
     $tid = $term['tid'];
     $parent_tid = db_query("SELECT t.parent FROM {taxonomy_term_hierarchy} t WHERE t.tid = :tid", array(':tid' => $tid))->fetchField();
-    $this->assertTrue($parent == $parent_tid, 'The ' . $type . ' is linked to its container');
+    $this->assertTrue($parent === $parent_tid, 'The ' . $type . ' is linked to its container');
 
     return $term;
   }
@@ -467,7 +467,7 @@ class ForumTestCase extends DrupalWebTestCase {
     // View forum help node.
     $this->drupalGet('admin/help/forum');
     $this->assertResponse($response2);
-    if ($response2 == 200) {
+    if ($response2 === 200) {
       $this->assertTitle(t('Forum | Drupal'), t('Forum help title was displayed'));
       $this->assertText(t('Forum'), t('Forum help node was displayed'));
     }
@@ -499,11 +499,11 @@ class ForumTestCase extends DrupalWebTestCase {
     // View forum edit node.
     $this->drupalGet('node/' . $node->nid . '/edit');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertTitle('Edit Forum topic ' . $node->title . ' | Drupal', t('Forum edit node was displayed'));
     }
 
-    if ($response == 200) {
+    if ($response === 200) {
       // Edit forum node (including moving it to another forum).
       $edit = array();
       $langcode = LANGUAGE_NOT_SPECIFIED;
@@ -520,7 +520,7 @@ class ForumTestCase extends DrupalWebTestCase {
         ':nid' => $node->nid,
         ':vid' => $node->vid,
       ))->fetchField();
-      $this->assertTrue($forum_tid == $this->root_forum['tid'], 'The forum topic is linked to a different forum');
+      $this->assertTrue($forum_tid === $this->root_forum['tid'], 'The forum topic is linked to a different forum');
 
       // Delete forum node.
       $this->drupalPost('node/' . $node->nid . '/delete', array(), t('Delete'));
diff --git a/core/modules/help/help.admin.inc b/core/modules/help/help.admin.inc
index 81cd224..5df670e 100644
--- a/core/modules/help/help.admin.inc
+++ b/core/modules/help/help.admin.inc
@@ -78,8 +78,8 @@ function help_links_as_list() {
   $i = 0;
   foreach ($modules as $module => $name) {
     $output .= '<li>' . l($name, 'admin/help/' . $module) . '</li>';
-    if (($i + 1) % $break == 0 && ($i + 1) != $count) {
-      $output .= '</ul></div><div class="help-items' . ($i + 1 == $break * 3 ? ' help-items-last' : '') . '"><ul>';
+    if (($i + 1) % $break === 0 && ($i + 1) != $count) {
+      $output .= '</ul></div><div class="help-items' . ($i + 1 === $break * 3 ? ' help-items-last' : '') . '"><ul>';
     }
     $i++;
   }
diff --git a/core/modules/help/help.api.php b/core/modules/help/help.api.php
index f7d9c08..58be90e 100644
--- a/core/modules/help/help.api.php
+++ b/core/modules/help/help.api.php
@@ -36,7 +36,7 @@
  *   An array that corresponds to the return value of the arg() function, for
  *   modules that want to provide help that is specific to certain values
  *   of wildcards in $path. For example, you could provide help for the path
- *   'user/1' by looking for the path 'user/%' and $arg[1] == '1'. This given
+ *   'user/1' by looking for the path 'user/%' and $arg[1] === '1'. This given
  *   array should always be used rather than directly invoking arg(), because
  *   your hook implementation may be called for other purposes besides building
  *   the current page's help. Note that depending on which module is invoking
diff --git a/core/modules/help/help.module b/core/modules/help/help.module
index 9e74751..2470a59 100644
--- a/core/modules/help/help.module
+++ b/core/modules/help/help.module
@@ -69,7 +69,7 @@ function help_help($path, $arg) {
  * Implements hook_preprocess_block().
  */
 function help_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'help') {
+  if ($variables['block']->module === 'help') {
     $variables['attributes_array']['role'] = 'complementary';
   }
 }
diff --git a/core/modules/help/help.test b/core/modules/help/help.test
index 7bffe70..98dd992 100644
--- a/core/modules/help/help.test
+++ b/core/modules/help/help.test
@@ -80,7 +80,7 @@ class HelpTestCase extends DrupalWebTestCase {
       // View module help node.
       $this->drupalGet('admin/help/' . $module);
       $this->assertResponse($response);
-      if ($response == 200) {
+      if ($response === 200) {
         $this->assertTitle($name . ' | Drupal', t('[' . $module . '] Title was displayed'));
         $this->assertRaw('<h1 class="page-title">' . t($name) . '</h1>', t('[' . $module . '] Heading was displayed'));
        }
diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc
index ecb72d8..908c88f 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -204,7 +204,7 @@ function image_style_form_submit($form, &$form_state) {
     image_style_delete($old_style, $style['name']);
   }
 
-  if ($form_state['values']['op'] == t('Update style')) {
+  if ($form_state['values']['op'] === t('Update style')) {
     drupal_set_message(t('Changes to the style have been saved.'));
   }
   $form_state['redirect'] = 'admin/config/media/image-styles/edit/' . $style['name'];
@@ -661,7 +661,7 @@ function theme_image_style_effects($variables) {
     if (!isset($form[$key]['#access']) || $form[$key]['#access']) {
       $rows[] = array(
         'data' => $row,
-        'class' => !empty($form[$key]['weight']['#access']) || $key == 'new' ? array('draggable') : array(),
+        'class' => !empty($form[$key]['weight']['#access']) || $key === 'new' ? array('draggable') : array(),
       );
     }
   }
@@ -672,7 +672,7 @@ function theme_image_style_effects($variables) {
     array('data' => t('Operations'), 'colspan' => 2),
   );
 
-  if (count($rows) == 1 && (!isset($form['new']['#access']) || $form['new']['#access'])) {
+  if (count($rows) === 1 && (!isset($form['new']['#access']) || $form['new']['#access'])) {
     array_unshift($rows, array(array(
       'data' => t('There are currently no effects in this style. Add one by selecting an option below.'),
       'colspan' => 4,
@@ -779,7 +779,7 @@ function theme_image_anchor($variables) {
     $element[$key]['#attributes']['title'] = $element[$key]['#title'];
     unset($element[$key]['#title']);
     $row[] = drupal_render($element[$key]);
-    if ($n % 3 == 3 - 1) {
+    if ($n % 3 === 3 - 1) {
       $rows[] = $row;
       $row = array();
     }
diff --git a/core/modules/image/image.api.php b/core/modules/image/image.api.php
index 758d38b..9bb759a 100644
--- a/core/modules/image/image.api.php
+++ b/core/modules/image/image.api.php
@@ -78,7 +78,7 @@ function hook_image_effect_info_alter(&$effects) {
 function hook_image_style_save($style) {
   // If a module defines an image style and that style is renamed by the user
   // the module should update any references to that style.
-  if (isset($style['old_name']) && $style['old_name'] == variable_get('mymodule_image_style', '')) {
+  if (isset($style['old_name']) && $style['old_name'] === variable_get('mymodule_image_style', '')) {
     variable_set('mymodule_image_style', $style['name']);
   }
 }
@@ -97,7 +97,7 @@ function hook_image_style_save($style) {
 function hook_image_style_delete($style) {
   // Administrators can choose an optional replacement style when deleting.
   // Update the modules style variable accordingly.
-  if (isset($style['old_name']) && $style['old_name'] == variable_get('mymodule_image_style', '')) {
+  if (isset($style['old_name']) && $style['old_name'] === variable_get('mymodule_image_style', '')) {
     variable_set('mymodule_image_style', $style['name']);
   }
 }
@@ -141,7 +141,7 @@ function hook_image_style_flush($style) {
  */
 function hook_image_styles_alter(&$styles) {
   // Check that we only affect a default style.
-  if ($styles['thumbnail']['storage'] == IMAGE_STORAGE_DEFAULT) {
+  if ($styles['thumbnail']['storage'] === IMAGE_STORAGE_DEFAULT) {
     // Add an additional effect to the thumbnail style.
     $styles['thumbnail']['effects'][] = array(
       'name' => 'image_desaturate',
diff --git a/core/modules/image/image.effects.inc b/core/modules/image/image.effects.inc
index 35a6a74..b03b341 100644
--- a/core/modules/image/image.effects.inc
+++ b/core/modules/image/image.effects.inc
@@ -259,7 +259,7 @@ function image_rotate_effect(&$image, $data) {
   );
 
   // Convert short #FFF syntax to full #FFFFFF syntax.
-  if (strlen($data['bgcolor']) == 4) {
+  if (strlen($data['bgcolor']) === 4) {
     $c = $data['bgcolor'];
     $data['bgcolor'] = $c[0] . $c[1] . $c[1] . $c[2] . $c[2] . $c[3] . $c[3];
   }
@@ -301,7 +301,7 @@ function image_rotate_effect(&$image, $data) {
 function image_rotate_dimensions(array &$dimensions, array $data) {
   // If the rotate is not random and the angle is a multiple of 90 degrees,
   // then the new dimensions can be determined.
-  if (!$data['random'] && ((int) ($data['degrees']) == $data['degrees']) && ($data['degrees'] % 90 == 0)) {
+  if (!$data['random'] && ((int) ($data['degrees']) === $data['degrees']) && ($data['degrees'] % 90 === 0)) {
     if ($data['degrees'] % 180 != 0) {
       $temp = $dimensions['width'];
       $dimensions['width'] = $dimensions['height'];
diff --git a/core/modules/image/image.field.inc b/core/modules/image/image.field.inc
index aef6be7..0261b94 100644
--- a/core/modules/image/image.field.inc
+++ b/core/modules/image/image.field.inc
@@ -166,7 +166,7 @@ function _image_field_resolution_validate($element, &$form_state) {
         form_error($element[$dimension], t('Height and width values must be numeric.'));
         return;
       }
-      if (intval($value) == 0) {
+      if (intval($value) === 0) {
         form_error($element[$dimension], t('Both a height and width value must be specified in the !name field.', array('!name' => $element['#title'])));
         return;
       }
@@ -327,7 +327,7 @@ function image_field_widget_form(&$form, &$form_state, $field, $instance, $langc
     $elements[$delta]['#process'][] = 'image_field_widget_process';
   }
 
-  if ($field['cardinality'] == 1) {
+  if ($field['cardinality'] === 1) {
     // If there's only one field, return it as delta 0.
     if (empty($elements[0]['#default_value']['fid'])) {
       $elements[0]['#description'] = theme('file_upload_help', array('description' => $instance['description'], 'upload_validators' => $elements[0]['#upload_validators']));
@@ -538,10 +538,10 @@ function image_field_formatter_view($entity_type, $entity, $field, $instance, $l
   $element = array();
 
   // Check if the formatter involves a link.
-  if ($display['settings']['image_link'] == 'content') {
+  if ($display['settings']['image_link'] === 'content') {
     $uri = entity_uri($entity_type, $entity);
   }
-  elseif ($display['settings']['image_link'] == 'file') {
+  elseif ($display['settings']['image_link'] === 'file') {
     $link_file = TRUE;
   }
 
@@ -578,7 +578,7 @@ function theme_image_formatter($variables) {
   $item = $variables['item'];
 
   // Do not output an empty 'title' attribute.
-  if (drupal_strlen($item['title']) == 0) {
+  if (drupal_strlen($item['title']) === 0) {
     unset($item['title']);
   }
 
diff --git a/core/modules/image/image.install b/core/modules/image/image.install
index 91349a9..c1803b8 100644
--- a/core/modules/image/image.install
+++ b/core/modules/image/image.install
@@ -77,7 +77,7 @@ function image_field_schema($field) {
 function image_requirements($phase) {
   $requirements = array();
 
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     // Check for the PHP GD library.
     if (function_exists('imagegd2')) {
       $info = gd_info();
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index a0816e4..616d18f 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -59,7 +59,7 @@ function image_help($path, $arg) {
       $effect = image_effect_definition_load($arg[7]);
       return isset($effect['help']) ? ('<p>' . $effect['help'] . '</p>') : NULL;
     case 'admin/config/media/image-styles/edit/%/effects/%':
-      $effect = ($arg[5] == 'add') ? image_effect_definition_load($arg[6]) : image_effect_load($arg[6], $arg[4]);
+      $effect = ($arg[5] === 'add') ? image_effect_definition_load($arg[6]) : image_effect_load($arg[6], $arg[4]);
       return isset($effect['help']) ? ('<p>' . $effect['help'] . '</p>') : NULL;
   }
 }
@@ -329,18 +329,18 @@ function image_image_style_save($style) {
     $instances = field_read_instances();
     // Loop through all fields searching for image fields.
     foreach ($instances as $instance) {
-      if ($instance['widget']['module'] == 'image') {
+      if ($instance['widget']['module'] === 'image') {
         $instance_changed = FALSE;
         foreach ($instance['display'] as $view_mode => $display) {
           // Check if the formatter involves an image style.
-          if ($display['type'] == 'image' && $display['settings']['image_style'] == $style['old_name']) {
+          if ($display['type'] === 'image' && $display['settings']['image_style'] === $style['old_name']) {
             // Update display information for any instance using the image
             // style that was just deleted.
             $instance['display'][$view_mode]['settings']['image_style'] = $style['name'];
             $instance_changed = TRUE;
           }
         }
-        if ($instance['widget']['settings']['preview_image_style'] == $style['old_name']) {
+        if ($instance['widget']['settings']['preview_image_style'] === $style['old_name']) {
           $instance['widget']['settings']['preview_image_style'] = $style['name'];
           $instance_changed = TRUE;
         }
@@ -367,7 +367,7 @@ function image_field_delete_field($field) {
     return;
   }
 
-  // The value of a managed_file element can be an array if #extended == TRUE.
+  // The value of a managed_file element can be an array if #extended === TRUE.
   $fid = (is_array($field['settings']['default_image']) ? $field['settings']['default_image']['fid'] : $field['settings']['default_image']);
   if ($fid && ($file = file_load($fid))) {
     file_usage_delete($file, 'image', 'default_image', $field['id']);
@@ -382,7 +382,7 @@ function image_field_update_field($field, $prior_field, $has_data) {
     return;
   }
 
-  // The value of a managed_file element can be an array if #extended == TRUE.
+  // The value of a managed_file element can be an array if #extended === TRUE.
   $fid_new = (is_array($field['settings']['default_image']) ? $field['settings']['default_image']['fid'] : $field['settings']['default_image']);
   $fid_old = (is_array($prior_field['settings']['default_image']) ? $prior_field['settings']['default_image']['fid'] : $prior_field['settings']['default_image']);
 
@@ -614,7 +614,7 @@ function image_style_deliver($style, $scheme) {
 
   // If using the private scheme, let other modules provide headers and
   // control access to the file.
-  if ($scheme == 'private') {
+  if ($scheme === 'private') {
     if (file_exists($derivative_uri)) {
       file_download($scheme, file_uri_target($derivative_uri));
     }
@@ -802,7 +802,7 @@ function image_style_url($style_name, $path) {
   // with the query string. If the file does not exist, use url() to ensure
   // that it is included. Once the file exists it's fine to fall back to the
   // actual file path, this avoids bootstrapping PHP once the files are built.
-  if (!variable_get('clean_url') && file_uri_scheme($uri) == 'public' && !file_exists($uri)) {
+  if (!variable_get('clean_url') && file_uri_scheme($uri) === 'public' && !file_exists($uri)) {
     $directory_path = file_stream_wrapper_get_instance_by_uri($uri)->getDirectoryPath();
     return url($directory_path . '/' . file_uri_target($uri), array('absolute' => TRUE));
   }
diff --git a/core/modules/image/image.test b/core/modules/image/image.test
index 2c422a7..c4e8d44 100644
--- a/core/modules/image/image.test
+++ b/core/modules/image/image.test
@@ -221,7 +221,7 @@ class ImageStylesPathAndUrlUnitTest extends DrupalWebTestCase {
     $generated_image_info = image_get_info($generated_uri);
     $this->assertEqual($this->drupalGetHeader('Content-Type'), $generated_image_info['mime_type'], t('Expected Content-Type was reported.'));
     $this->assertEqual($this->drupalGetHeader('Content-Length'), $generated_image_info['file_size'], t('Expected Content-Length was reported.'));
-    if ($scheme == 'private') {
+    if ($scheme === 'private') {
       $this->assertEqual($this->drupalGetHeader('X-Image-Owned-By'), 'image_module_test', t('Expected custom header has been added.'));
     }
   }
@@ -630,7 +630,7 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
     $this->assertRaw($default_output, t('Image linked to file formatter displaying correctly on full node view.'));
     // Verify that the image can be downloaded.
     $this->assertEqual(file_get_contents($test_image->uri), $this->drupalGet(file_create_url($image_uri)), t('File was downloaded successfully.'));
-    if ($scheme == 'private') {
+    if ($scheme === 'private') {
       // Only verify HTTP headers when using private scheme and the headers are
       // sent by Drupal.
       $this->assertEqual($this->drupalGetHeader('Content-Type'), 'image/png; name="' . $test_image->filename . '"', t('Content-Type header was sent.'));
@@ -667,7 +667,7 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
     $this->drupalGet('node/' . $nid);
     $this->assertRaw($default_output, t('Image style thumbnail formatter displaying correctly on full node view.'));
 
-    if ($scheme == 'private') {
+    if ($scheme === 'private') {
       // Log out and try to access the file.
       $this->drupalLogout();
       $this->drupalGet(image_style_url('thumbnail', $image_uri));
@@ -780,7 +780,7 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
     field_info_cache_clear();
     $field = field_info_field($field_name);
     $image = file_load($field['settings']['default_image']);
-    $this->assertTrue($image->status == FILE_STATUS_PERMANENT, t('The default image status is permanent.'));
+    $this->assertTrue($image->status === FILE_STATUS_PERMANENT, t('The default image status is permanent.'));
     $default_output = theme('image', array('uri' => $image->uri));
     $this->drupalGet('node/' . $node->nid);
     $this->assertRaw($default_output, t('Default image displayed when no user supplied image is present.'));
@@ -820,7 +820,7 @@ class ImageFieldDisplayTestCase extends ImageFieldTestCase {
     $private_field = field_info_field($private_field_name);
     $image = file_load($private_field['settings']['default_image']);
     $this->assertEqual('private', file_uri_scheme($image->uri), t('Default image uses private:// scheme.'));
-    $this->assertTrue($image->status == FILE_STATUS_PERMANENT, t('The default image status is permanent.'));
+    $this->assertTrue($image->status === FILE_STATUS_PERMANENT, t('The default image status is permanent.'));
     // Create a new node with no image attached and ensure that default private
     // image is displayed.
     $node = $this->drupalCreateNode(array('type' => 'article'));
diff --git a/core/modules/image/tests/image_module_test.module b/core/modules/image/tests/image_module_test.module
index 766a9d9..5f966fc 100644
--- a/core/modules/image/tests/image_module_test.module
+++ b/core/modules/image/tests/image_module_test.module
@@ -6,7 +6,7 @@
  */
 
 function image_module_test_file_download($uri) {
-  if (variable_get('image_module_test_file_download', FALSE) == $uri) {
+  if (variable_get('image_module_test_file_download', FALSE) === $uri) {
     return array('X-Image-Owned-By' => 'image_module_test');
   }
   return -1;
diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index e341094..b1e2522 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -37,7 +37,7 @@ function language_admin_overview_form($form, &$form_state) {
       '#title' => t('Enable @title', array('@title' => $language->name)),
       '#title_display' => 'invisible',
       '#default_value' => (int) $language->enabled,
-      '#disabled' => $langcode == $default->langcode,
+      '#disabled' => $langcode === $default->langcode,
     );
     $form['languages'][$langcode]['default'] = array(
       '#type' => 'radio',
@@ -45,7 +45,7 @@ function language_admin_overview_form($form, &$form_state) {
       '#title' => t('Set @title as default', array('@title' => $language->name)),
       '#title_display' => 'invisible',
       '#return_value' => $langcode,
-      '#default_value' => ($langcode == $default->langcode ? $langcode : NULL),
+      '#default_value' => ($langcode === $default->langcode ? $langcode : NULL),
       '#id' => 'edit-site-default-' . $langcode,
     );
     $form['languages'][$langcode]['weight'] = array(
@@ -152,10 +152,10 @@ function language_admin_overview_form_submit($form, &$form_state) {
   $old_default = language_default();
 
   foreach ($languages as $langcode => $language) {
-    $language->default = ($form_state['values']['site_default'] == $langcode);
+    $language->default = ($form_state['values']['site_default'] === $langcode);
     $language->weight = $form_state['values']['languages'][$langcode]['weight'];
 
-    if ($language->default || $old_default->langcode == $langcode) {
+    if ($language->default || $old_default->langcode === $langcode) {
       // Automatically enable the default language and the language which was
       // default previously (because we will not get the value from that
       // disabled checkbox).
@@ -165,7 +165,7 @@ function language_admin_overview_form_submit($form, &$form_state) {
 
     // If the interface language has been disabled make sure that the form
     // redirect includes the new default language as a query parameter.
-    if ($language->enabled == FALSE && $langcode == $GLOBALS['language_interface']->langcode) {
+    if ($language->enabled === FALSE && $langcode === $GLOBALS['language_interface']->langcode) {
       $form_state['redirect'] = array('admin/config/regional/language', array('language' => $languages[$form_state['values']['site_default']]));
     }
 
@@ -295,7 +295,7 @@ function _language_admin_common_controls(&$form, $language = NULL) {
  */
 function language_admin_add_predefined_form_validate($form, &$form_state) {
   $langcode = $form_state['values']['predefined_langcode'];
-  if ($langcode == 'custom') {
+  if ($langcode === 'custom') {
     form_set_error('predefined_langcode', t('Fill in the language details and save the language with <em>Add custom language</em>.'));
   }
   else {
@@ -309,7 +309,7 @@ function language_admin_add_predefined_form_validate($form, &$form_state) {
  * Validate the language addition form on custom language button.
  */
 function language_admin_add_custom_form_validate($form, &$form_state) {
-  if ($form_state['values']['predefined_langcode'] == 'custom') {
+  if ($form_state['values']['predefined_langcode'] === 'custom') {
     $langcode = $form_state['values']['langcode'];
     // Reuse the editing form validation routine if we add a custom language.
     language_admin_edit_form_validate($form, $form_state);
@@ -389,7 +389,7 @@ function language_admin_edit_form_submit($form, &$form_state) {
 function language_admin_delete_form($form, &$form_state, $language) {
   $langcode = $language->langcode;
 
-  if (language_default()->langcode == $langcode) {
+  if (language_default()->langcode === $langcode) {
     drupal_set_message(t('The default language cannot be deleted.'));
     drupal_goto('admin/config/regional/language');
   }
@@ -740,7 +740,7 @@ function language_negotiation_configure_url_form_validate($form, &$form_state) {
     $value = $form_state['values']['prefix'][$langcode];
 
     if ($value === '') {
-      if (!$language->default && $form_state['values']['language_negotiation_url_part'] == LANGUAGE_NEGOTIATION_URL_PREFIX) {
+      if (!$language->default && $form_state['values']['language_negotiation_url_part'] === LANGUAGE_NEGOTIATION_URL_PREFIX) {
         // Throw a form error if the prefix is blank for a non-default language,
         // although it is required for selected negotiation type.
         form_error($form['prefix'][$langcode], t('The prefix may only be left blank for the default language.'));
@@ -759,7 +759,7 @@ function language_negotiation_configure_url_form_validate($form, &$form_state) {
     $value = $form_state['values']['domain'][$langcode];
 
     if ($value === '') {
-      if (!$language->default && $form_state['values']['language_negotiation_url_part'] == LANGUAGE_NEGOTIATION_URL_DOMAIN) {
+      if (!$language->default && $form_state['values']['language_negotiation_url_part'] === LANGUAGE_NEGOTIATION_URL_DOMAIN) {
         // Throw a form error if the domain is blank for a non-default language,
         // although it is required for selected negotiation type.
         form_error($form['domain'][$langcode], t('The domain may only be left blank for the default language.'));
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 34f1a59..4f927b6 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -38,7 +38,7 @@ function language_help($path, $arg) {
       return $output;
 
     case 'admin/structure/block/manage/%/%':
-      if ($arg[4] == 'language' && $arg[5] == 'language_interface') {
+      if ($arg[4] === 'language' && $arg[5] === 'language_interface') {
         return '<p>' . t('This block is only shown if <a href="@languages">at least two languages are enabled</a> and <a href="@configuration">language negotiation</a> is set to <em>URL</em> or <em>Session</em>.', array('@languages' => url('admin/config/regional/language'), '@configuration' => url('admin/config/regional/language/detection'))) . '</p>';
       }
       break;
@@ -243,10 +243,10 @@ function language_css_alter(&$css) {
   global $language_interface;
 
   // If the current language is RTL, add the CSS file with the RTL overrides.
-  if ($language_interface->direction == LANGUAGE_RTL) {
+  if ($language_interface->direction === LANGUAGE_RTL) {
     foreach ($css as $data => $item) {
       // Only provide RTL overrides for files.
-      if ($item['type'] == 'file') {
+      if ($item['type'] === 'file') {
         $rtl_path = str_replace('.css', '-rtl.css', $item['data']);
         if (file_exists($rtl_path) && !isset($css[$rtl_path])) {
           // Replicate the same item, but with the RTL path and a little larger
@@ -418,7 +418,7 @@ function language_language_update($language) {
   if (!empty($language->default)) {
     $prefixes = language_negotiation_url_prefixes();
     foreach ($prefixes as $langcode => $prefix) {
-      if ($prefix == '' && $langcode != $language->langcode) {
+      if ($prefix === '' && $langcode != $language->langcode) {
         $prefixes[$langcode] = $langcode;
       }
     }
@@ -486,7 +486,7 @@ function language_block_view($type) {
  * Implements hook_preprocess_block().
  */
 function language_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'language') {
+  if ($variables['block']->module === 'language') {
     $variables['attributes_array']['role'] = 'navigation';
   }
 }
diff --git a/core/modules/language/language.negotiation.inc b/core/modules/language/language.negotiation.inc
index c90457f..568ccac 100644
--- a/core/modules/language/language.negotiation.inc
+++ b/core/modules/language/language.negotiation.inc
@@ -227,7 +227,7 @@ function language_from_url($languages) {
           // the hostname.
           $host = 'http://' . str_replace(array('http://', 'https://'), '', $domains[$language->langcode]);
           $host = parse_url($host, PHP_URL_HOST);
-          if ($_SERVER['HTTP_HOST'] == $host) {
+          if ($_SERVER['HTTP_HOST'] === $host) {
             $language_url = $language->langcode;
             break;
           }
@@ -273,7 +273,7 @@ function language_from_url($languages) {
  */
 function language_url_fallback($language = NULL, $language_type = LANGUAGE_TYPE_INTERFACE) {
   $default = language_default();
-  $prefix = (variable_get('language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX) == LANGUAGE_NEGOTIATION_URL_PREFIX);
+  $prefix = (variable_get('language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX) === LANGUAGE_NEGOTIATION_URL_PREFIX);
 
   // If the default language is not configured to convey language information,
   // a missing URL language information indicates that URL language should be
diff --git a/core/modules/locale/locale.admin.inc b/core/modules/locale/locale.admin.inc
index d74f714..5c19fd5 100644
--- a/core/modules/locale/locale.admin.inc
+++ b/core/modules/locale/locale.admin.inc
@@ -128,7 +128,7 @@ function locale_date_format_form_submit($form, &$form_state) {
   $types = system_get_date_types();
   foreach ($types as $type => $type_info) {
     $format = $form_state['values']['date_format_' . $type];
-    if ($format == 'custom') {
+    if ($format === 'custom') {
       $format = $form_state['values']['date_format_' . $type . '_custom'];
     }
     locale_date_format_save($langcode, $type, $format);
diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc
index ed3d3a6..bd409fe 100644
--- a/core/modules/locale/locale.bulk.inc
+++ b/core/modules/locale/locale.bulk.inc
@@ -107,7 +107,7 @@ function locale_translate_import_form_submit($form, &$form_state) {
     $customized = $form_state['values']['customized'] ? LOCALE_CUSTOMIZED : LOCALE_NOT_CUSTOMIZED;
 
     // Now import strings into the language
-    if ($return = _locale_import_po($file, $language->langcode, $form_state['values']['overwrite_options'], $customized) == FALSE) {
+    if ($return = _locale_import_po($file, $language->langcode, $form_state['values']['overwrite_options'], $customized) === FALSE) {
       $variables = array('%filename' => $file->filename);
       drupal_set_message(t('The translation import of %filename failed.', $variables), 'error');
       watchdog('locale', 'The translation import of %filename failed.', $variables, WATCHDOG_ERROR);
diff --git a/core/modules/locale/locale.install b/core/modules/locale/locale.install
index d740c67..c52fd0e 100644
--- a/core/modules/locale/locale.install
+++ b/core/modules/locale/locale.install
@@ -165,7 +165,7 @@ function locale_update_8001() {
   if (!empty($types) && isset($types['language'])) {
     $new_types = array();
     foreach ($types as $key => $type) {
-      $new_types[$key == 'language' ? 'language_interface' : $key] = $type;
+      $new_types[$key === 'language' ? 'language_interface' : $key] = $type;
     }
     variable_set('language_types', $new_types);
   }
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 6f81480..6d2af0f 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -289,9 +289,9 @@ function locale_form_alter(&$form, &$form_state, $form_id) {
   if (language_multilingual()) {
     // Display language selector when either creating a user on the admin
     // interface or editing a user account.
-    if ($form_id == 'user_register_form' || $form_id == 'user_profile_form') {
+    if ($form_id === 'user_register_form' || $form_id === 'user_profile_form') {
       $selector = locale_language_selector_form($form['#user']);
-      if ($form_id == 'user_register_form') {
+      if ($form_id === 'user_register_form') {
         $selector['locale']['#access'] = user_access('administer users');
       }
       $form += $selector;
@@ -495,7 +495,7 @@ function locale($string = NULL, $context = NULL, $langcode = NULL) {
     // the exact list of strings used on a page. From a performance
     // perspective that is a really bad idea, so we have no user
     // interface for this. Be careful when turning this option off!
-    if (variable_get('locale_cache_strings', 1) == 1) {
+    if (variable_get('locale_cache_strings', 1) === 1) {
       if ($cache = cache()->get('locale:' . $langcode)) {
         $locale_t[$langcode] = $cache->data;
       }
@@ -607,7 +607,7 @@ function locale_get_plural($count, $langcode = NULL) {
     }
     // In case there is no plural formula for English (no imported translation
     // for English), use a default formula.
-    elseif ($langcode == 'en') {
+    elseif ($langcode === 'en') {
       $plural_indexes[$langcode][$count] = (int) ($count != 1);
     }
     // Otherwise, return -1 (unknown).
@@ -675,7 +675,7 @@ function locale_js_alter(&$javascript) {
   $files = $new_files = FALSE;
 
   foreach ($javascript as $item) {
-    if ($item['type'] == 'file') {
+    if ($item['type'] === 'file') {
       $files = TRUE;
       $filepath = $item['data'];
       if (!in_array($filepath, $parsed)) {
@@ -728,13 +728,13 @@ function locale_js_alter(&$javascript) {
  */
 function locale_library_info_alter(&$libraries, $module) {
   global $language_interface;
-  if ($module == 'system' && isset($libraries['system']['ui.datepicker'])) {
+  if ($module === 'system' && isset($libraries['system']['ui.datepicker'])) {
     $datepicker = drupal_get_path('module', 'locale') . '/locale.datepicker.js';
     $libraries['system']['ui.datepicker']['js'][$datepicker] = array('group' => JS_THEME);
     $libraries['system']['ui.datepicker']['js'][] = array(
       'data' => array(
         'jqueryuidatepicker' => array(
-          'rtl' => $language_interface->direction == LANGUAGE_RTL,
+          'rtl' => $language_interface->direction === LANGUAGE_RTL,
           'firstDay' => variable_get('date_first_day', 0),
         ),
       ),
@@ -801,7 +801,7 @@ function locale_form_language_admin_add_form_alter(&$form, &$form_state) {
  * Set a batch for newly added language.
  */
 function locale_form_language_admin_add_form_alter_submit($form, $form_state) {
-  if (empty($form_state['values']['predefined_langcode']) || $form_state['values']['predefined_langcode'] == 'custom') {
+  if (empty($form_state['values']['predefined_langcode']) || $form_state['values']['predefined_langcode'] === 'custom') {
     $langcode = $form_state['values']['langcode'];
   }
   else {
@@ -816,7 +816,7 @@ function locale_form_language_admin_add_form_alter_submit($form, $form_state) {
  * Implements hook_form_FORM_ID_alter() for language_admin_edit_form().
  */
 function locale_form_language_admin_edit_form_alter(&$form, &$form_state) {
-  if ($form['langcode']['#type'] == 'value' && $form['langcode']['#value'] == 'en') {
+  if ($form['langcode']['#type'] === 'value' && $form['langcode']['#value'] === 'en') {
     $form['locale_translate_english'] = array(
       '#title' => t('Enable interface translation to English'),
       '#type' => 'checkbox',
@@ -898,7 +898,7 @@ function locale_preprocess_node(&$variables) {
  * possible attack vector (img).
  */
 function locale_string_is_safe($string) {
-  return decode_entities($string) == decode_entities(filter_xss($string, array('a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', 'blockquote', 'br', 'caption', 'cite', 'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dl', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'ins', 'kbd', 'li', 'ol', 'p', 'pre', 'q', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'ul', 'var')));
+  return decode_entities($string) === decode_entities(filter_xss($string, array('a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', 'blockquote', 'br', 'caption', 'cite', 'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dl', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'ins', 'kbd', 'li', 'ol', 'p', 'pre', 'q', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'ul', 'var')));
 }
 
 /**
@@ -1123,7 +1123,7 @@ function _locale_rebuild_js($langcode = NULL) {
       $locale_javascripts[$language->langcode] = $data_hash;
       // If we deleted a previous version of the file and we replace it with a
       // new one we have an update.
-      if ($status == 'deleted') {
+      if ($status === 'deleted') {
         $status = 'updated';
       }
       // If the file did not exist previously and the data has changed we have
diff --git a/core/modules/locale/locale.pages.inc b/core/modules/locale/locale.pages.inc
index 74603a9..384ee50 100644
--- a/core/modules/locale/locale.pages.inc
+++ b/core/modules/locale/locale.pages.inc
@@ -123,7 +123,7 @@ function _locale_translate_language_list($translation, $limit_language) {
   }
   $output = '';
   foreach ($languages as $langcode => $language) {
-    if (!$limit_language || $limit_language == $langcode) {
+    if (!$limit_language || $limit_language === $langcode) {
       $output .= (!empty($translation[$langcode])) ? $langcode . ' ' : "<em class=\"locale-untranslated\">$langcode</em> ";
     }
   }
@@ -216,7 +216,7 @@ function locale_translation_filter_form() {
   );
   foreach ($filters as $key => $filter) {
     // Special case for 'string' filter.
-    if ($key == 'string') {
+    if ($key === 'string') {
       $form['filters']['status']['string'] = array(
         '#type' => 'search',
         '#title' => $filter['title'],
@@ -263,7 +263,7 @@ function locale_translation_filter_form() {
  * Validate result from locale translation filter form.
  */
 function locale_translation_filter_form_validate($form, &$form_state) {
-  if ($form_state['values']['op'] == t('Filter') && empty($form_state['values']['language'])) {
+  if ($form_state['values']['op'] === t('Filter') && empty($form_state['values']['language'])) {
     form_set_error('type', t('You must select something to filter by.'));
   }
 }
@@ -305,7 +305,7 @@ function locale_translate_edit_form($form, &$form_state, $lid) {
   }
   // Split source to work with plural values.
   $source_array = explode(LOCALE_PLURAL_DELIMITER, $source->source);
-  if (count($source_array) == 1) {
+  if (count($source_array) === 1) {
     // Add original text value and mark as non-plural.
     $form['plural'] = array(
       '#type' => 'value',
@@ -387,7 +387,7 @@ function locale_translate_edit_form($form, &$form_state, $lid) {
         for ($i = 0; $i < $plural_formulas[$langcode]['plurals']; $i++) {
           $form['translations'][$langcode][$i] = array(
             '#type' => 'textarea',
-            '#title' => ($i == 0 ? t('Singular form') : format_plural($i, 'First plural form', '@count. plural form')),
+            '#title' => ($i === 0 ? t('Singular form') : format_plural($i, 'First plural form', '@count. plural form')),
             '#rows' => $rows,
             '#default_value' => '',
           );
diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test
index bb3c6e7..043caa2 100644
--- a/core/modules/locale/locale.test
+++ b/core/modules/locale/locale.test
@@ -276,14 +276,14 @@ class LocaleTranslationFunctionalTest extends DrupalWebTestCase {
     $this->drupalGet($string_edit_url);
     $this->assertRaw($translation, t('Non-English translation properly saved.'));
     $this->assertRaw($translation_to_en, t('English translation properly saved.'));
-    $this->assertTrue($name != $translation && t($name, array(), array('langcode' => $langcode)) == $translation, t('t() works for non-English.'));
+    $this->assertTrue($name != $translation && t($name, array(), array('langcode' => $langcode)) === $translation, t('t() works for non-English.'));
     // Refresh the locale() cache to get fresh data from t() below. We are in
     // the same HTTP request and therefore t() is not refreshed by saving the
     // translation above.
     locale_reset();
     // Now we should get the proper fresh translation from t().
-    $this->assertTrue($name != $translation_to_en && t($name, array(), array('langcode' => 'en')) == $translation_to_en, t('t() works for English.'));
-    $this->assertTrue(t($name, array(), array('langcode' => LANGUAGE_SYSTEM)) == $name, t('t() works for LANGUAGE_SYSTEM.'));
+    $this->assertTrue($name != $translation_to_en && t($name, array(), array('langcode' => 'en')) === $translation_to_en, t('t() works for English.'));
+    $this->assertTrue(t($name, array(), array('langcode' => LANGUAGE_SYSTEM)) === $name, t('t() works for LANGUAGE_SYSTEM.'));
     $this->drupalPost('admin/config/regional/translate/translate', $search, t('Filter'));
     // The indicator should not be here.
     $this->assertNoRaw($language_indicator, t('String is translated.'));
@@ -691,7 +691,7 @@ class LocalePluralFormatTest extends DrupalWebTestCase {
         $this->assertIdentical(locale_get_plural($count, $langcode), $expected_plural_index, 'Computed plural index for ' . $langcode . ' for count ' . $count . ' is ' . $expected_plural_index);
         // Assert that the we get the right translation for that. Change the
         // expected index as per the logic for translation lookups.
-        $expected_plural_index = ($count == 1) ? 0 : $expected_plural_index;
+        $expected_plural_index = ($count === 1) ? 0 : $expected_plural_index;
         $expected_plural_string = str_replace('@count', $count, $plural_strings[$langcode][$expected_plural_index]);
         $this->assertIdentical(format_plural($count, '1 hour', '@count hours', array(), array('langcode' => $langcode)), $expected_plural_string, 'Plural translation of 1 hours / @count hours for count ' . $count . ' in ' . $langcode . ' is ' . $expected_plural_string);
       }
@@ -941,7 +941,7 @@ class LocaleImportFunctionalTest extends DrupalWebTestCase {
 
     // This import should have saved plural forms to have 2 variants.
     $locale_plurals = variable_get('locale_translation_plurals', array());
-    $this->assert($locale_plurals['fr']['plurals'] == 2, t('Plural number initialized.'));
+    $this->assert($locale_plurals['fr']['plurals'] === 2, t('Plural number initialized.'));
 
     // Ensure we were redirected correctly.
     $this->assertEqual($this->getUrl(), url('admin/config/regional/translate', array('absolute' => TRUE)), t('Correct page redirection.'));
@@ -987,7 +987,7 @@ class LocaleImportFunctionalTest extends DrupalWebTestCase {
 
     // This import should not have changed number of plural forms.
     $locale_plurals = variable_get('locale_translation_plurals', array());
-    $this->assert($locale_plurals['fr']['plurals'] == 2, t('Plural numbers untouched.'));
+    $this->assert($locale_plurals['fr']['plurals'] === 2, t('Plural numbers untouched.'));
 
     // Try importing a .po file with overriding strings, and ensure existing
     // strings are overwritten.
@@ -1008,7 +1008,7 @@ class LocaleImportFunctionalTest extends DrupalWebTestCase {
     $this->assertNoText(t('No strings available.'), t('String overwritten by imported string.'));
     // This import should have changed number of plural forms.
     $locale_plurals = variable_get('locale_translation_plurals', array());
-    $this->assert($locale_plurals['fr']['plurals'] == 3, t('Plural numbers changed.'));
+    $this->assert($locale_plurals['fr']['plurals'] === 3, t('Plural numbers changed.'));
 
     // Importing a .po file and mark its strings as customized strings.
     $this->importPoFile($this->getCustomPoFile(), array(
@@ -1579,7 +1579,7 @@ class LocaleUninstallFunctionalTest extends DrupalWebTestCase {
     $language = (object) array(
       'langcode' => 'fr',
       'name' => 'French',
-      'default' => $this->langcode == 'fr',
+      'default' => $this->langcode === 'fr',
     );
     language_save($language);
 
@@ -1641,12 +1641,12 @@ class LocaleUninstallFunctionalTest extends DrupalWebTestCase {
 
     // Check language negotiation.
     require_once DRUPAL_ROOT . '/core/includes/language.inc';
-    $this->assertTrue(count(language_types_get_all()) == count(language_types_get_default()), t('Language types reset'));
-    $language_negotiation = language_negotiation_method_get_first(LANGUAGE_TYPE_INTERFACE) == LANGUAGE_NEGOTIATION_DEFAULT;
+    $this->assertTrue(count(language_types_get_all()) === count(language_types_get_default()), t('Language types reset'));
+    $language_negotiation = language_negotiation_method_get_first(LANGUAGE_TYPE_INTERFACE) === LANGUAGE_NEGOTIATION_DEFAULT;
     $this->assertTrue($language_negotiation, t('Interface language negotiation: %setting', array('%setting' => t($language_negotiation ? 'none' : 'set'))));
-    $language_negotiation = language_negotiation_method_get_first(LANGUAGE_TYPE_CONTENT) == LANGUAGE_NEGOTIATION_DEFAULT;
+    $language_negotiation = language_negotiation_method_get_first(LANGUAGE_TYPE_CONTENT) === LANGUAGE_NEGOTIATION_DEFAULT;
     $this->assertTrue($language_negotiation, t('Content language negotiation: %setting', array('%setting' => t($language_negotiation ? 'none' : 'set'))));
-    $language_negotiation = language_negotiation_method_get_first(LANGUAGE_TYPE_URL) == LANGUAGE_NEGOTIATION_DEFAULT;
+    $language_negotiation = language_negotiation_method_get_first(LANGUAGE_TYPE_URL) === LANGUAGE_NEGOTIATION_DEFAULT;
     $this->assertTrue($language_negotiation, t('URL language negotiation: %setting', array('%setting' => t($language_negotiation ? 'none' : 'set'))));
 
     // Check language negotiation method settings.
@@ -2694,11 +2694,11 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase {
     // language.
     $args = array(':url' => base_path() . (!empty($GLOBALS['conf']['clean_url']) ? $langcode_browser_fallback : "?q=$langcode_browser_fallback"));
     $fields = $this->xpath('//div[@id="block-language-language-interface"]//a[@class="language-link active" and starts-with(@href, :url)]', $args);
-    $this->assertTrue($fields[0] == $languages[$langcode_browser_fallback]->name, t('The browser language is the URL active language'));
+    $this->assertTrue($fields[0] === $languages[$langcode_browser_fallback]->name, t('The browser language is the URL active language'));
 
     // Check that URLs are rewritten using the given browser language.
     $fields = $this->xpath('//p[@id="site-name"]/strong/a[@rel="home" and @href=:url]', $args);
-    $this->assertTrue($fields[0] == 'Drupal', t('URLs are rewritten using the browser language.'));
+    $this->assertTrue($fields[0] === 'Drupal', t('URLs are rewritten using the browser language.'));
   }
 
   /**
@@ -2737,13 +2737,13 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase {
     $italian_url = url('admin', array('language' => $languages['it']));
     $url_scheme = ($is_https) ? 'https://' : 'http://';
     $correct_link = $url_scheme . $link;
-    $this->assertTrue($italian_url == $correct_link, t('The url() function returns the right url (@url) in accordance with the chosen language', array('@url' => $italian_url)));
+    $this->assertTrue($italian_url === $correct_link, t('The url() function returns the right url (@url) in accordance with the chosen language', array('@url' => $italian_url)));
 
     // Test https via options.
     variable_set('https', TRUE);
     $italian_url = url('admin', array('https' => TRUE, 'language' => $languages['it']));
     $correct_link = 'https://' . $link;
-    $this->assertTrue($italian_url == $correct_link, t('The url() function returns the right https url (via options) (@url) in accordance with the chosen language', array('@url' => $italian_url)));
+    $this->assertTrue($italian_url === $correct_link, t('The url() function returns the right https url (via options) (@url) in accordance with the chosen language', array('@url' => $italian_url)));
     variable_set('https', FALSE);
 
     // Test https via current url scheme.
@@ -2751,7 +2751,7 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase {
     $is_https = TRUE;
     $italian_url = url('admin', array('language' => $languages['it']));
     $correct_link = 'https://' . $link;
-    $this->assertTrue($italian_url == $correct_link, t('The url() function returns the right url (via current url scheme) (@url) in accordance with the chosen language', array('@url' => $italian_url)));
+    $this->assertTrue($italian_url === $correct_link, t('The url() function returns the right url (via current url scheme) (@url) in accordance with the chosen language', array('@url' => $italian_url)));
     $is_https = $temp_https;
   }
 }
@@ -2909,7 +2909,7 @@ class LocaleMultilingualFieldsFunctionalTest extends DrupalWebTestCase {
     $node = $this->drupalGetNodeByTitle($edit[$title_key]);
     $this->assertTrue($node, t('Node found in database.'));
 
-    $assert = isset($node->body['en']) && !isset($node->body[LANGUAGE_NOT_SPECIFIED]) && $node->body['en'][0]['value'] == $body_value;
+    $assert = isset($node->body['en']) && !isset($node->body[LANGUAGE_NOT_SPECIFIED]) && $node->body['en'][0]['value'] === $body_value;
     $this->assertTrue($assert, t('Field language correctly set.'));
 
     // Change node language.
@@ -2922,7 +2922,7 @@ class LocaleMultilingualFieldsFunctionalTest extends DrupalWebTestCase {
     $node = $this->drupalGetNodeByTitle($edit[$title_key]);
     $this->assertTrue($node, t('Node found in database.'));
 
-    $assert = isset($node->body['it']) && !isset($node->body['en']) && $node->body['it'][0]['value'] == $body_value;
+    $assert = isset($node->body['it']) && !isset($node->body['en']) && $node->body['it'][0]['value'] === $body_value;
     $this->assertTrue($assert, t('Field language correctly changed.'));
 
     // Enable content language URL detection.
@@ -3202,7 +3202,7 @@ class LocaleLanguageNegotiationInfoFunctionalTest extends DrupalWebTestCase {
     // only to the corresponding language types.
     foreach (language_types_get_configurable() as $type) {
       $form_field = $type . '[enabled][test_language_negotiation_method_ts]';
-      if ($type == $test_type) {
+      if ($type === $test_type) {
         $this->assertFieldByXPath("//input[@name=\"$form_field\"]", NULL, t('Type-specific test language negotiation method available for %type.', array('%type' => $type)));
       }
       else {
@@ -3215,7 +3215,7 @@ class LocaleLanguageNegotiationInfoFunctionalTest extends DrupalWebTestCase {
     $last = variable_get('locale_test_language_negotiation_last', array());
     foreach (language_types_get_all() as $type) {
       $langcode = $last[$type];
-      $value = $type == LANGUAGE_TYPE_CONTENT || strpos($type, 'test') !== FALSE ? 'it' : 'en';
+      $value = $type === LANGUAGE_TYPE_CONTENT || strpos($type, 'test') !== FALSE ? 'it' : 'en';
       $this->assertEqual($langcode, $value, t('The negotiated language for %type is %language', array('%type' => $type, '%language' => $langcode)));
     }
 
@@ -3279,10 +3279,10 @@ class LocaleLanguageNegotiationInfoFunctionalTest extends DrupalWebTestCase {
     foreach (language_types_info() as $type => $info) {
       if (isset($info['fixed'])) {
         $negotiation = variable_get("language_negotiation_$type", array());
-        $equal = count($info['fixed']) == count($negotiation);
+        $equal = count($info['fixed']) === count($negotiation);
         while ($equal && list($id) = each($negotiation)) {
           list(, $info_id) = each($info['fixed']);
-          $equal = $info_id == $id;
+          $equal = $info_id === $id;
         }
         $this->assertTrue($equal, t('language negotiation for %type is properly set up', array('%type' => $type)));
       }
diff --git a/core/modules/menu/menu.admin.inc b/core/modules/menu/menu.admin.inc
index 2e1725d..c3964aa 100644
--- a/core/modules/menu/menu.admin.inc
+++ b/core/modules/menu/menu.admin.inc
@@ -125,11 +125,11 @@ function _menu_overview_tree_form($tree) {
       $operations = array();
       $operations['edit'] = array('#type' => 'link', '#title' => t('edit'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/edit');
       // Only items created by the menu module can be deleted.
-      if ($item['module'] == 'menu' || $item['updated'] == 1) {
+      if ($item['module'] === 'menu' || $item['updated'] === 1) {
         $operations['delete'] = array('#type' => 'link', '#title' => t('delete'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/delete');
       }
       // Set the reset column.
-      elseif ($item['module'] == 'system' && $item['customized']) {
+      elseif ($item['module'] === 'system' && $item['customized']) {
         $operations['reset'] = array('#type' => 'link', '#title' => t('reset'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/reset');
       }
       $form[$mlid]['operations'] = $operations;
@@ -256,7 +256,7 @@ function theme_menu_overview_form($variables) {
  * Menu callback; Build the menu link editing form.
  */
 function menu_edit_item($form, &$form_state, $type, $item, $menu) {
-  if ($type == 'add' || empty($item)) {
+  if ($type === 'add' || empty($item)) {
     // This is an add form, initialize the menu link.
     $item = array('link_title' => '', 'mlid' => 0, 'plid' => 0, 'menu_name' => $menu['menu_name'], 'weight' => 0, 'link_path' => '', 'options' => array(), 'module' => 'menu', 'expanded' => 0, 'hidden' => 0, 'has_children' => 0);
   }
@@ -292,7 +292,7 @@ function menu_edit_item($form, &$form_state, $type, $item, $menu) {
   if (isset($item['options']['fragment'])) {
     $path .= '#' . $item['options']['fragment'];
   }
-  if ($item['module'] == 'menu') {
+  if ($item['module'] === 'menu') {
     $form['link_path'] = array(
       '#type' => 'textfield',
       '#title' => t('Path'),
@@ -485,7 +485,7 @@ function menu_edit_menu($form, &$form_state, $type, $menu = array()) {
   $form['actions']['delete'] = array(
     '#type' => 'submit',
     '#value' => t('Delete'),
-    '#access' => $type == 'edit' && !isset($system_menus[$menu['menu_name']]),
+    '#access' => $type === 'edit' && !isset($system_menus[$menu['menu_name']]),
     '#submit' => array('menu_custom_delete_submit'),
   );
 
@@ -615,7 +615,7 @@ function menu_edit_menu_submit($form, &$form_state) {
 function menu_item_delete_page($item) {
   // Links defined via hook_menu may not be deleted. Updated items are an
   // exception, as they can be broken.
-  if ($item['module'] == 'system' && !$item['updated']) {
+  if ($item['module'] === 'system' && !$item['updated']) {
     drupal_access_denied();
     return;
   }
diff --git a/core/modules/menu/menu.admin.js b/core/modules/menu/menu.admin.js
index 4e5bf07..47dfa0d 100644
--- a/core/modules/menu/menu.admin.js
+++ b/core/modules/menu/menu.admin.js
@@ -36,7 +36,7 @@ Drupal.menu_update_parent_list = function () {
       // Add new options to dropdown.
       jQuery.each(options, function(index, value) {
         $('fieldset#edit-menu #edit-menu-parent').append(
-          $('<option ' + (index == selected ? ' selected="selected"' : '') + '></option>').val(index).text(value)
+          $('<option ' + (index === selected ? ' selected="selected"' : '') + '></option>').val(index).text(value)
         );
       });
     }
diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module
index 1f8bd3a..51762c2 100644
--- a/core/modules/menu/menu.module
+++ b/core/modules/menu/menu.module
@@ -37,7 +37,7 @@ function menu_help($path, $arg) {
     case 'admin/structure/menu/add':
       return '<p>' . t('You can enable the newly-created block for this menu on the <a href="@blocks">Blocks administration page</a>.', array('@blocks' => url('admin/structure/block'))) . '</p>';
   }
-  if ($path == 'admin/structure/menu' && module_exists('block')) {
+  if ($path === 'admin/structure/menu' && module_exists('block')) {
     return '<p>' . t('Each menu has a corresponding block that is managed on the <a href="@blocks">Blocks administration page</a>.', array('@blocks' => url('admin/structure/block'))) . '</p>';
   }
 }
@@ -317,7 +317,7 @@ function menu_delete($menu) {
   // Remove menu from active menus variable.
   $active_menus = variable_get('menu_default_active_menus', array_keys(menu_get_menus()));
   foreach ($active_menus as $i => $menu_name) {
-    if ($menu['menu_name'] == $menu_name) {
+    if ($menu['menu_name'] === $menu_name) {
       unset($active_menus[$i]);
       variable_set('menu_default_active_menus', $active_menus);
     }
@@ -339,7 +339,7 @@ function menu_delete($menu) {
  *   An array of menu names and titles, such as from menu_get_menus().
  * @param $item
  *   The menu item or the node type for which to generate a list of parents.
- *   If $item['mlid'] == 0 then the complete tree is returned.
+ *   If $item['mlid'] === 0 then the complete tree is returned.
  * @param $type
  *   The node type for which to generate a list of parents.
  *   If $item itself is a node type then $type is ignored.
@@ -497,7 +497,7 @@ function menu_block_view($delta = '') {
  */
 function menu_block_view_alter(&$data, $block) {
   // Add contextual links for system menu blocks.
-  if ($block->module == 'system' && !empty($data['content'])) {
+  if ($block->module === 'system' && !empty($data['content'])) {
     $system_menus = menu_list_system_menus();
     if (isset($system_menus[$block->delta])) {
       $data['content']['#contextual_links']['menu'] = array('admin/structure/menu/manage', array($block->delta));
@@ -797,7 +797,7 @@ function menu_get_menus($all = TRUE) {
  * Implements hook_preprocess_block().
  */
 function menu_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'menu') {
+  if ($variables['block']->module === 'menu') {
     $variables['attributes_array']['role'] = 'navigation';
   }
 }
diff --git a/core/modules/menu/menu.test b/core/modules/menu/menu.test
index e1f2aa9..5c52a5c 100644
--- a/core/modules/menu/menu.test
+++ b/core/modules/menu/menu.test
@@ -538,21 +538,21 @@ class MenuTestCase extends DrupalWebTestCase {
     // View menu help node.
     $this->drupalGet('admin/help/menu');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Menu'), t('Menu help was displayed'));
     }
 
     // View menu build overview node.
     $this->drupalGet('admin/structure/menu');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Menus'), t('Menu build overview node was displayed'));
     }
 
     // View navigation menu customization node.
     $this->drupalGet('admin/structure/menu/manage/navigation');
         $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Navigation'), t('Navigation menu node was displayed'));
     }
 
@@ -560,21 +560,21 @@ class MenuTestCase extends DrupalWebTestCase {
     $item = $this->getStandardMenuLink();
     $this->drupalGet('admin/structure/menu/item/' . $item['mlid'] . '/edit');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Edit menu item'), t('Menu edit node was displayed'));
     }
 
     // View menu settings node.
     $this->drupalGet('admin/structure/menu/settings');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Menus'), t('Menu settings node was displayed'));
     }
 
     // View add menu node.
     $this->drupalGet('admin/structure/menu/add');
     $this->assertResponse($response);
-    if ($response == 200) {
+    if ($response === 200) {
       $this->assertText(t('Menus'), t('Add menu node was displayed'));
     }
   }
diff --git a/core/modules/node/content_types.inc b/core/modules/node/content_types.inc
index 2e45c9a..ed75dbd 100644
--- a/core/modules/node/content_types.inc
+++ b/core/modules/node/content_types.inc
@@ -255,7 +255,7 @@ function node_type_form($form, &$form_state, $type = NULL) {
  * Helper function for teaser length choices.
  */
 function _node_characters($length) {
-  return ($length == 0) ? t('Unlimited') : format_plural($length, '1 character', '@count characters');
+  return ($length === 0) ? t('Unlimited') : format_plural($length, '1 character', '@count characters');
 }
 
 /**
@@ -318,7 +318,7 @@ function node_type_form_submit($form, &$form_state) {
     $type->module = $form['#node_type']->module;
   }
 
-  if ($op == t('Delete content type')) {
+  if ($op === t('Delete content type')) {
     $form_state['redirect'] = 'admin/structure/types/manage/' . str_replace('_', '-', $type->old_type) . '/delete';
     return;
   }
@@ -358,10 +358,10 @@ function node_type_form_submit($form, &$form_state) {
   menu_rebuild();
   $t_args = array('%name' => $type->name);
 
-  if ($status == SAVED_UPDATED) {
+  if ($status === SAVED_UPDATED) {
     drupal_set_message(t('The content type %name has been updated.', $t_args));
   }
-  elseif ($status == SAVED_NEW) {
+  elseif ($status === SAVED_NEW) {
     node_add_body_field($type);
     drupal_set_message(t('The content type %name has been added.', $t_args));
     watchdog('node', 'Added content type %name.', $t_args, WATCHDOG_NOTICE, l(t('view'), 'admin/structure/types'));
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index ac18da7..82dc546 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -167,12 +167,12 @@ function node_filter_form() {
   );
   foreach ($session as $filter) {
     list($type, $value) = $filter;
-    if ($type == 'term') {
+    if ($type === 'term') {
       // Load term name from DB rather than search and parse options array.
       $value = module_invoke('taxonomy', 'term_load', $value);
       $value = $value->name;
     }
-    elseif ($type == 'language') {
+    elseif ($type === 'language') {
       $value = language_name($value);
     }
     else {
@@ -382,7 +382,7 @@ function _node_mass_update_batch_finished($success, $results, $operations) {
  * @see node_menu()
  */
 function node_admin_content($form, $form_state) {
-  if (isset($form_state['values']['operation']) && $form_state['values']['operation'] == 'delete') {
+  if (isset($form_state['values']['operation']) && $form_state['values']['operation'] === 'delete') {
     return node_multiple_delete_confirm($form, $form_state, array_filter($form_state['values']['nodes']));
   }
   $form['filter'] = node_filter_form();
diff --git a/core/modules/node/node.api.php b/core/modules/node/node.api.php
index 2324b47..90fb2d2 100644
--- a/core/modules/node/node.api.php
+++ b/core/modules/node/node.api.php
@@ -170,7 +170,7 @@
  * @endcode
  * And then in its hook_node_grants() implementation, it would need to return:
  * @code
- * if ($op == 'view') {
+ * if ($op === 'view') {
  *   $grants['example_realm'] = array(888);
  * }
  * @endcode
@@ -606,18 +606,18 @@ function hook_node_access($node, $op, $account) {
   $type = is_string($node) ? $node : $node->type;
 
   if (in_array($type, node_permissions_get_configured_types())) {
-    if ($op == 'create' && user_access('create ' . $type . ' content', $account)) {
+    if ($op === 'create' && user_access('create ' . $type . ' content', $account)) {
       return NODE_ACCESS_ALLOW;
     }
 
-    if ($op == 'update') {
-      if (user_access('edit any ' . $type . ' content', $account) || (user_access('edit own ' . $type . ' content', $account) && ($account->uid == $node->uid))) {
+    if ($op === 'update') {
+      if (user_access('edit any ' . $type . ' content', $account) || (user_access('edit own ' . $type . ' content', $account) && ($account->uid === $node->uid))) {
         return NODE_ACCESS_ALLOW;
       }
     }
 
-    if ($op == 'delete') {
-      if (user_access('delete any ' . $type . ' content', $account) || (user_access('delete own ' . $type . ' content', $account) && ($account->uid == $node->uid))) {
+    if ($op === 'delete') {
+      if (user_access('delete any ' . $type . ' content', $account) || (user_access('delete own ' . $type . ' content', $account) && ($account->uid === $node->uid))) {
         return NODE_ACCESS_ALLOW;
       }
     }
@@ -846,7 +846,7 @@ function hook_node_view($node, $view_mode, $langcode) {
  * @ingroup node_api_hooks
  */
 function hook_node_view_alter(&$build) {
-  if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
+  if ($build['#view_mode'] === 'full' && isset($build['an_additional_field'])) {
     // Change its weight.
     $build['an_additional_field']['#weight'] = -10;
   }
@@ -1269,7 +1269,7 @@ function hook_validate($node, $form, &$form_state) {
  * @ingroup node_api_hooks
  */
 function hook_view($node, $view_mode) {
-  if ($view_mode == 'full' && node_is_page($node)) {
+  if ($view_mode === 'full' && node_is_page($node)) {
     $breadcrumb = array();
     $breadcrumb[] = l(t('Home'), NULL);
     $breadcrumb[] = l(t('Example'), 'example');
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index a59a5c7..d59deb2 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -84,7 +84,7 @@ function node_help($path, $arg) {
   // while the rebuild is being processed.
   if ($path != 'admin/reports/status/rebuild' && $path != 'batch' && strpos($path, '#') === FALSE
       && user_access('access administration pages') && node_access_needs_rebuild()) {
-    if ($path == 'admin/reports/status') {
+    if ($path === 'admin/reports/status') {
       $message = t('The content access permissions need to be rebuilt.');
     }
     else {
@@ -129,7 +129,7 @@ function node_help($path, $arg) {
       return (!empty($type->help) ? '<p>' . filter_xss_admin($type->help) . '</p>' : '');
   }
 
-  if ($arg[0] == 'node' && $arg[1] == 'add' && $arg[2]) {
+  if ($arg[0] === 'node' && $arg[1] === 'add' && $arg[2]) {
     $type = node_type_get_type(str_replace('-', '_', $arg[2]));
     return (!empty($type->help) ? '<p>' . filter_xss_admin($type->help) . '</p>' : '');
   }
@@ -253,7 +253,7 @@ function node_entity_info() {
  */
 function node_field_display_node_alter(&$display, $context) {
   // Hide field labels in search index.
-  if ($context['view_mode'] == 'search_index') {
+  if ($context['view_mode'] === 'search_index') {
     $display['label'] = 'hidden';
   }
 }
@@ -365,7 +365,7 @@ function node_mark($nid, $timestamp) {
   if (!isset($cache[$nid])) {
     $cache[$nid] = node_last_viewed($nid);
   }
-  if ($cache[$nid] == 0 && $timestamp > NODE_NEW_LIMIT) {
+  if ($cache[$nid] === 0 && $timestamp > NODE_NEW_LIMIT) {
     return MARK_NEW;
   }
   elseif ($timestamp > $cache[$nid] && $timestamp > NODE_NEW_LIMIT) {
@@ -815,7 +815,7 @@ function node_type_set_defaults($info = array()) {
     $new_type->title_label = '';
   }
   if (empty($new_type->module)) {
-    $new_type->module = $new_type->base == 'node_content' ? 'node' : '';
+    $new_type->module = $new_type->base === 'node_content' ? 'node' : '';
   }
   $new_type->orig_type = isset($info['type']) ? $info['type'] : '';
 
@@ -1169,7 +1169,7 @@ function node_save($node) {
 
     // Update the node access table for this node. There's no need to delete
     // existing records if the node is new.
-    $delete = $op == 'update';
+    $delete = $op === 'update';
     node_access_acquire_grants($node, $delete);
 
     // Clear internal properties.
@@ -1307,7 +1307,7 @@ function node_revision_delete($revision_id) {
   if ($revision = node_load(NULL, $revision_id)) {
     // Prevent deleting the current revision.
     $node = node_load($revision->nid);
-    if ($revision_id == $node->vid) {
+    if ($revision_id === $node->vid) {
       return FALSE;
     }
 
@@ -1359,7 +1359,7 @@ function node_view($node, $view_mode = 'full', $langcode = NULL) {
   // displayed on its own page. Modules may alter this behavior (for example,
   // to restrict contextual links to certain view modes) by implementing
   // hook_node_view_alter().
-  if (!empty($node->nid) && !($view_mode == 'full' && node_is_page($node))) {
+  if (!empty($node->nid) && !($view_mode === 'full' && node_is_page($node))) {
     $build['#contextual_links']['node'] = array('node', array($node->nid));
   }
 
@@ -1428,7 +1428,7 @@ function node_build_content($node, $view_mode = 'full', $langcode = NULL) {
     '#pre_render' => array('drupal_pre_render_links'),
     '#attributes' => array('class' => array('links', 'inline')),
   );
-  if ($view_mode == 'teaser') {
+  if ($view_mode === 'teaser') {
     $node_title_stripped = strip_tags($node->title);
     $links['node-readmore'] = array(
       'title' => t('Read more<span class="element-invisible"> about @title</span>', array('@title' => $node_title_stripped)),
@@ -1487,14 +1487,14 @@ function node_show($node, $message = FALSE) {
  */
 function node_is_page($node) {
   $page_node = menu_get_object();
-  return (!empty($page_node) ? $page_node->nid == $node->nid : FALSE);
+  return (!empty($page_node) ? $page_node->nid === $node->nid : FALSE);
 }
 
  /**
  * Implements hook_preprocess_block().
  */
 function node_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'node') {
+  if ($variables['block']->module === 'node') {
     switch ($variables['block']->delta) {
       case 'syndicate':
         $variables['attributes_array']['role'] = 'complementary';
@@ -1524,7 +1524,7 @@ function node_preprocess_block(&$variables) {
 function template_preprocess_node(&$variables) {
   $variables['view_mode'] = $variables['elements']['#view_mode'];
   // Provide a distinct $teaser boolean.
-  $variables['teaser'] = $variables['view_mode'] == 'teaser';
+  $variables['teaser'] = $variables['view_mode'] === 'teaser';
   $variables['node'] = $variables['elements']['#node'];
   $node = $variables['node'];
 
@@ -1537,7 +1537,7 @@ function template_preprocess_node(&$variables) {
   $uri = entity_uri('node', $node);
   $variables['node_url']  = url($uri['path'], $uri['options']);
   $variables['title']     = check_plain($node->title);
-  $variables['page']      = $variables['view_mode'] == 'full' && node_is_page($node);
+  $variables['page']      = $variables['view_mode'] === 'full' && node_is_page($node);
 
   // Flatten the node object's member fields.
   $variables = array_merge((array) $node, $variables);
@@ -1950,14 +1950,14 @@ function _node_revision_access($node, $op = 'view', $account = NULL) {
     }
 
     $node_current_revision = node_load($node->nid);
-    $is_current_revision = $node_current_revision->vid == $node->vid;
+    $is_current_revision = $node_current_revision->vid === $node->vid;
 
     // There should be at least two revisions. If the vid of the given node
     // and the vid of the current revision differ, then we already have two
     // different revisions so there is no need for a separate database check.
     // Also, if you try to revert to or delete the current revision, that's
     // not good.
-    if ($is_current_revision && (db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() == 1 || $op == 'update' || $op == 'delete')) {
+    if ($is_current_revision && (db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() === 1 || $op === 'update' || $op === 'delete')) {
       $access[$cid] = FALSE;
     }
     elseif (user_access('administer nodes', $account)) {
@@ -2183,7 +2183,7 @@ function node_menu() {
  */
 function node_menu_local_tasks_alter(&$data, $router_item, $root_path) {
   // Add action link to 'node/add' on 'admin/content' page.
-  if ($root_path == 'admin/content') {
+  if ($root_path === 'admin/content') {
     $item = menu_get_item('node/add');
     if ($item['access']) {
       $data['actions']['output'][] = array(
@@ -2296,7 +2296,7 @@ function node_block_view($delta = '') {
  */
 function node_block_configure($delta = '') {
   $form = array();
-  if ($delta == 'recent') {
+  if ($delta === 'recent') {
     $form['node_recent_block_count'] = array(
       '#type' => 'select',
       '#title' => t('Number of recent content items to display'),
@@ -2311,7 +2311,7 @@ function node_block_configure($delta = '') {
  * Implements hook_block_save().
  */
 function node_block_save($delta = '', $edit = array()) {
-  if ($delta == 'recent') {
+  if ($delta === 'recent') {
     variable_set('node_recent_block_count', $edit['node_recent_block_count']);
   }
 }
@@ -2528,7 +2528,7 @@ function node_block_list_alter(&$blocks) {
 
   $node = menu_get_object();
   $node_types = node_type_get_types();
-  if (arg(0) == 'node' && arg(1) == 'add' && arg(2)) {
+  if (arg(0) === 'node' && arg(1) === 'add' && arg(2)) {
     $node_add_arg = strtr(arg(2), '-', '_');
   }
   foreach ($blocks as $key => $block) {
@@ -2602,7 +2602,7 @@ function node_feed($nids = FALSE, $channel = array()) {
 
   $item_length = variable_get('feed_item_length', 'fulltext');
   $namespaces = array('xmlns:dc' => 'http://purl.org/dc/elements/1.1/');
-  $teaser = ($item_length == 'teaser');
+  $teaser = ($item_length === 'teaser');
 
   // Load all nodes to be rendered.
   $nodes = node_load_multiple($nids);
@@ -2806,7 +2806,7 @@ function _node_index_node($node) {
  * @see node_search_validate()
  */
 function node_form_search_form_alter(&$form, $form_state) {
-  if (isset($form['module']) && $form['module']['#value'] == 'node' && user_access('use advanced search')) {
+  if (isset($form['module']) && $form['module']['#value'] === 'node' && user_access('use advanced search')) {
     // Keyword boxes:
     $form['advanced'] = array(
       '#type' => 'fieldset',
@@ -3056,7 +3056,7 @@ function node_access($op, $node, $account = NULL) {
   }
 
   // Check if authors can view their own unpublished nodes.
-  if ($op == 'view' && !$node->status && user_access('view own unpublished content', $account) && $account->uid == $node->uid && $account->uid != 0) {
+  if ($op === 'view' && !$node->status && user_access('view own unpublished content', $account) && $account->uid === $node->uid && $account->uid != 0) {
     $rights[$account->uid][$cid][$op] = TRUE;
     return TRUE;
   }
@@ -3093,7 +3093,7 @@ function node_access($op, $node, $account = NULL) {
       $rights[$account->uid][$cid][$op] = $result;
       return $result;
     }
-    elseif (is_object($node) && $op == 'view' && $node->status) {
+    elseif (is_object($node) && $op === 'view' && $node->status) {
       // If no modules implement hook_node_grants(), the default behaviour is to
       // allow all users to view published nodes, so reflect that here.
       $rights[$account->uid][$cid][$op] = TRUE;
@@ -3111,18 +3111,18 @@ function node_node_access($node, $op, $account) {
   $type = is_string($node) ? $node : $node->type;
 
   if (in_array($type, node_permissions_get_configured_types())) {
-    if ($op == 'create' && user_access('create ' . $type . ' content', $account)) {
+    if ($op === 'create' && user_access('create ' . $type . ' content', $account)) {
       return NODE_ACCESS_ALLOW;
     }
 
-    if ($op == 'update') {
-      if (user_access('edit any ' . $type . ' content', $account) || (user_access('edit own ' . $type . ' content', $account) && ($account->uid == $node->uid))) {
+    if ($op === 'update') {
+      if (user_access('edit any ' . $type . ' content', $account) || (user_access('edit own ' . $type . ' content', $account) && ($account->uid === $node->uid))) {
         return NODE_ACCESS_ALLOW;
       }
     }
 
-    if ($op == 'delete') {
-      if (user_access('delete any ' . $type . ' content', $account) || (user_access('delete own ' . $type . ' content', $account) && ($account->uid == $node->uid))) {
+    if ($op === 'delete') {
+      if (user_access('delete any ' . $type . ' content', $account) || (user_access('delete own ' . $type . ' content', $account) && ($account->uid === $node->uid))) {
         return NODE_ACCESS_ALLOW;
       }
     }
@@ -3347,7 +3347,7 @@ function _node_query_node_access_alter($query, $type) {
   if (!count(module_implements('node_grants'))) {
     return;
   }
-  if ($op == 'view' && node_access_view_all_nodes($account)) {
+  if ($op === 'view' && node_access_view_all_nodes($account)) {
     return;
   }
 
@@ -3360,7 +3360,7 @@ function _node_query_node_access_alter($query, $type) {
       if (!($table_info instanceof SelectInterface)) {
         $table = $table_info['table'];
         // If the node table is in the query, it wins immediately.
-        if ($table == 'node') {
+        if ($table === 'node') {
           $base_table = $table;
           break;
         }
@@ -3404,7 +3404,7 @@ function _node_query_node_access_alter($query, $type) {
   // the node_access table.
 
   $grants = node_access_grants($op, $account);
-  if ($type == 'entity') {
+  if ($type === 'entity') {
     // The original query looked something like:
     // @code
     //  SELECT nid FROM sometable s
@@ -3426,7 +3426,7 @@ function _node_query_node_access_alter($query, $type) {
   }
   foreach ($tables as $nalias => $tableinfo) {
     $table = $tableinfo['table'];
-    if (!($table instanceof SelectInterface) && $table == $base_table) {
+    if (!($table instanceof SelectInterface) && $table === $base_table) {
       // Set the subquery.
       $subquery = db_select('node_access', 'na')
        ->fields('na', array('nid'));
@@ -3450,7 +3450,7 @@ function _node_query_node_access_alter($query, $type) {
       $subquery->condition('na.grant_' . $op, 1, '>=');
       $field = 'nid';
       // Now handle entities.
-      if ($type == 'entity') {
+      if ($type === 'entity') {
         // Set a common alias for entities.
         $base_alias = $nalias;
         $field = 'entity_id';
@@ -3460,7 +3460,7 @@ function _node_query_node_access_alter($query, $type) {
     }
   }
 
-  if ($type == 'entity' && count($subquery->conditions())) {
+  if ($type === 'entity' && count($subquery->conditions())) {
     // All the node access conditions are only for field values belonging to
     // nodes.
     $entity_conditions->condition("$base_alias.entity_type", 'node');
@@ -4129,7 +4129,7 @@ function node_modules_disabled($modules) {
 
   // If there remains no more node_access module, rebuilding will be
   // straightforward, we can do it right now.
-  if (node_access_needs_rebuild() && count(module_implements('node_grants')) == 0) {
+  if (node_access_needs_rebuild() && count(module_implements('node_grants')) === 0) {
     node_access_rebuild();
   }
 }
@@ -4187,7 +4187,7 @@ class NodeController extends DrupalDefaultEntityController {
  * Implements hook_file_download_access().
  */
 function node_file_download_access($field, $entity_type, $entity) {
-  if ($entity_type == 'node') {
+  if ($entity_type === 'node') {
     return node_access('view', $entity);
   }
 }
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index 4e94b26..15e7061 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -30,7 +30,7 @@ function node_add_page() {
   $item = menu_get_item();
   $content = system_admin_menu_block($item);
   // Bypass the node/add listing if only one content type is available.
-  if (count($content) == 1) {
+  if (count($content) === 1) {
     $item = array_shift($content);
     drupal_goto($item['href']);
   }
diff --git a/core/modules/node/node.test b/core/modules/node/node.test
index 1dbcaf3..5fae3fc 100644
--- a/core/modules/node/node.test
+++ b/core/modules/node/node.test
@@ -64,12 +64,12 @@ class NodeLoadMultipleUnitTest extends NodeWebTestCase {
     $this->assertEqual($node3->title, $nodes[$node3->nid]->title, t('Node was loaded.'));
     $this->assertEqual($node4->title, $nodes[$node4->nid]->title, t('Node was loaded.'));
     $count = count($nodes);
-    $this->assertTrue($count == 2, t('@count nodes loaded.', array('@count' => $count)));
+    $this->assertTrue($count === 2, t('@count nodes loaded.', array('@count' => $count)));
 
     // Load nodes by nid. Nodes 1, 2 and 4 will be loaded.
     $nodes = node_load_multiple(array(1, 2, 4));
     $count = count($nodes);
-    $this->assertTrue(count($nodes) == 3, t('@count nodes loaded', array('@count' => $count)));
+    $this->assertTrue(count($nodes) === 3, t('@count nodes loaded', array('@count' => $count)));
     $this->assertTrue(isset($nodes[$node1->nid]), t('Node is correctly keyed in the array'));
     $this->assertTrue(isset($nodes[$node2->nid]), t('Node is correctly keyed in the array'));
     $this->assertTrue(isset($nodes[$node4->nid]), t('Node is correctly keyed in the array'));
@@ -80,7 +80,7 @@ class NodeLoadMultipleUnitTest extends NodeWebTestCase {
     // Load nodes by nid, where type = article. Nodes 1, 2 and 3 will be loaded.
     $nodes = node_load_multiple(array(1, 2, 3, 4), array('type' => 'article'));
     $count = count($nodes);
-    $this->assertTrue($count == 3, t('@count nodes loaded', array('@count' => $count)));
+    $this->assertTrue($count === 3, t('@count nodes loaded', array('@count' => $count)));
     $this->assertEqual($nodes[$node1->nid]->title, $node1->title, t('Node successfully loaded.'));
     $this->assertEqual($nodes[$node2->nid]->title, $node2->title, t('Node successfully loaded.'));
     $this->assertEqual($nodes[$node3->nid]->title, $node3->title, t('Node successfully loaded.'));
@@ -90,7 +90,7 @@ class NodeLoadMultipleUnitTest extends NodeWebTestCase {
     // they are loaded correctly again when a condition is passed.
     $nodes = node_load_multiple(array(1, 2, 3, 4), array('type' => 'article'));
     $count = count($nodes);
-    $this->assertTrue($count == 3, t('@count nodes loaded.', array('@count' => $count)));
+    $this->assertTrue($count === 3, t('@count nodes loaded.', array('@count' => $count)));
     $this->assertEqual($nodes[$node1->nid]->title, $node1->title, t('Node successfully loaded'));
     $this->assertEqual($nodes[$node2->nid]->title, $node2->title, t('Node successfully loaded'));
     $this->assertEqual($nodes[$node3->nid]->title, $node3->title, t('Node successfully loaded'));
@@ -99,7 +99,7 @@ class NodeLoadMultipleUnitTest extends NodeWebTestCase {
     // Load nodes by nid, where type = article and promote = 0.
     $nodes = node_load_multiple(array(1, 2, 3, 4), array('type' => 'article', 'promote' => 0));
     $count = count($nodes);
-    $this->assertTrue($count == 1, t('@count node loaded', array('@count' => $count)));
+    $this->assertTrue($count === 1, t('@count node loaded', array('@count' => $count)));
     $this->assertEqual($nodes[$node3->nid]->title, $node3->title, t('Node successfully loaded.'));
   }
 }
@@ -222,14 +222,14 @@ class NodeRevisionsTestCase extends NodeWebTestCase {
                         array('@type' => 'Basic page', '%title' => $nodes[1]->title,
                               '%revision-date' => format_date($nodes[1]->revision_timestamp))), t('Revision reverted.'));
     $reverted_node = node_load($node->nid);
-    $this->assertTrue(($nodes[1]->body[LANGUAGE_NOT_SPECIFIED][0]['value'] == $reverted_node->body[LANGUAGE_NOT_SPECIFIED][0]['value']), t('Node reverted correctly.'));
+    $this->assertTrue(($nodes[1]->body[LANGUAGE_NOT_SPECIFIED][0]['value'] === $reverted_node->body[LANGUAGE_NOT_SPECIFIED][0]['value']), t('Node reverted correctly.'));
 
     // Confirm revisions delete properly.
     $this->drupalPost("node/$node->nid/revisions/{$nodes[1]->vid}/delete", array(), t('Delete'));
     $this->assertRaw(t('Revision from %revision-date of @type %title has been deleted.',
                         array('%revision-date' => format_date($nodes[1]->revision_timestamp),
                               '@type' => 'Basic page', '%title' => $nodes[1]->title)), t('Revision deleted.'));
-    $this->assertTrue(db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid and vid = :vid', array(':nid' => $node->nid, ':vid' => $nodes[1]->vid))->fetchField() == 0, t('Revision not found.'));
+    $this->assertTrue(db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid and vid = :vid', array(':nid' => $node->nid, ':vid' => $nodes[1]->vid))->fetchField() === 0, t('Revision not found.'));
   }
 
   /**
@@ -1055,7 +1055,7 @@ class NodeAccessBaseTableTestCase extends NodeWebTestCase {
         $this->drupalPost('node/add/article', $edit, t('Save'));
         $nid = db_query('SELECT nid FROM {node} WHERE title = :title', array(':title' => $edit['title']))->fetchField();
         $private_status = db_query('SELECT private FROM {node_access_test} where nid = :nid', array(':nid' => $nid))->fetchField();
-        $this->assertTrue($is_private == $private_status, t('The private status of the node was properly set in the node_access_test table.'));
+        $this->assertTrue($is_private === $private_status, t('The private status of the node was properly set in the node_access_test table.'));
         if ($is_private) {
           $private_nodes[] = $nid;
         }
@@ -1074,7 +1074,7 @@ class NodeAccessBaseTableTestCase extends NodeWebTestCase {
         foreach ($data as $nid => $is_private) {
           $this->drupalGet('node/' . $nid);
           if ($is_private) {
-            $should_be_visible = $uid == $this->webUser->uid;
+            $should_be_visible = $uid === $this->webUser->uid;
           }
           else {
             $should_be_visible = TRUE;
@@ -1129,11 +1129,11 @@ class NodeAccessBaseTableTestCase extends NodeWebTestCase {
         foreach ($data as $nid => $is_private) {
           // Private nodes should be visible on the private term page,
           // public nodes should be visible on the public term page.
-          $should_be_visible = $tid_is_private == $is_private;
+          $should_be_visible = $tid_is_private === $is_private;
           // Non-administrators can only see their own nodes on the private
           // term page.
           if (!$is_admin && $tid_is_private) {
-            $should_be_visible = $should_be_visible && $uid == $this->webUser->uid;
+            $should_be_visible = $should_be_visible && $uid === $this->webUser->uid;
           }
           $this->assertIdentical(isset($this->nids_visible[$nid]), $should_be_visible, strtr('A %private node by user %uid is %visible for user %current_uid on the %tid_is_private page.', array(
             '%private' => $is_private ? 'private' : 'public',
@@ -2403,7 +2403,7 @@ class NodeRevisionPermissionsTestCase extends NodeWebTestCase {
 
     $permutations = $this->generatePermutations($parameters);
     foreach ($permutations as $case) {
-      if (!empty($case['account']->is_admin) || $case['op'] == $case['account']->op) {
+      if (!empty($case['account']->is_admin) || $case['op'] === $case['account']->op) {
         $this->assertTrue(_node_revision_access($revision, $case['op'], $case['account']), "{$this->map[$case['op']]} granted.");
       }
       else {
diff --git a/core/modules/node/node.tokens.inc b/core/modules/node/node.tokens.inc
index 1b37fc8..16b52c8 100644
--- a/core/modules/node/node.tokens.inc
+++ b/core/modules/node/node.tokens.inc
@@ -102,7 +102,7 @@ function node_tokens($type, $tokens, array $data = array(), array $options = arr
 
   $replacements = array();
 
-  if ($type == 'node' && !empty($data['node'])) {
+  if ($type === 'node' && !empty($data['node'])) {
     $node = $data['node'];
 
     foreach ($tokens as $name => $original) {
@@ -136,7 +136,7 @@ function node_tokens($type, $tokens, array $data = array(), array $options = arr
         case 'body':
         case 'summary':
           if ($items = field_get_items('node', $node, 'body', $language_code)) {
-            $column = ($name == 'body') ? 'value' : 'summary';
+            $column = ($name === 'body') ? 'value' : 'summary';
             $instance = field_info_instance('node', 'body', $node->type);
             $field_langcode = field_language('node', $node, 'body', $language_code);
             $replacements[$original] = $sanitize ? _text_sanitize($instance, $field_langcode, $items[0], $column) : $items[0][$column];
diff --git a/core/modules/node/node.tpl.php b/core/modules/node/node.tpl.php
index a251ecc..62ff611 100644
--- a/core/modules/node/node.tpl.php
+++ b/core/modules/node/node.tpl.php
@@ -54,7 +54,7 @@
  *
  * Node status variables:
  * - $view_mode: View mode, e.g. 'full', 'teaser'...
- * - $teaser: Flag for the teaser state (shortcut for $view_mode == 'teaser').
+ * - $teaser: Flag for the teaser state (shortcut for $view_mode === 'teaser').
  * - $page: Flag for the full page state.
  * - $promote: Flag for front page promotion state.
  * - $sticky: Flags for sticky post setting.
diff --git a/core/modules/node/tests/modules/node_access_test/node_access_test.install b/core/modules/node/tests/modules/node_access_test/node_access_test.install
index 6b3ef5d..1f33d51 100644
--- a/core/modules/node/tests/modules/node_access_test/node_access_test.install
+++ b/core/modules/node/tests/modules/node_access_test/node_access_test.install
@@ -39,4 +39,4 @@ function node_access_test_schema() {
   );
 
   return $schema;
-}
\ No newline at end of file
+}
diff --git a/core/modules/node/tests/modules/node_access_test/node_access_test.module b/core/modules/node/tests/modules/node_access_test/node_access_test.module
index d9e6e2f..e6a2836 100644
--- a/core/modules/node/tests/modules/node_access_test/node_access_test.module
+++ b/core/modules/node/tests/modules/node_access_test/node_access_test.module
@@ -14,10 +14,10 @@ function node_access_test_node_grants($account, $op) {
   $grants = array();
   // First grant a grant to the author for own content.
   $grants['node_access_test_author'] = array($account->uid);
-  if ($op == 'view' && user_access('node test view', $account)) {
+  if ($op === 'view' && user_access('node test view', $account)) {
     $grants['node_access_test'] = array(8888, 8889);
   }
-  if ($op == 'view' && $account->uid == variable_get('node_test_node_access_all_uid', 0)) {
+  if ($op === 'view' && $account->uid === variable_get('node_test_node_access_all_uid', 0)) {
     $grants['node_access_all'] = array(0);
   }
   return $grants;
diff --git a/core/modules/node/tests/modules/node_test/node_test.module b/core/modules/node/tests/modules/node_test/node_test.module
index b0ebc14..733ef5f 100644
--- a/core/modules/node/tests/modules/node_test/node_test.module
+++ b/core/modules/node/tests/modules/node_test/node_test.module
@@ -26,7 +26,7 @@ function node_test_node_load($nodes, $types) {
  * Implements hook_node_view().
  */
 function node_test_node_view($node, $view_mode) {
-  if ($view_mode == 'rss') {
+  if ($view_mode === 'rss') {
     // Add RSS elements and namespaces when building the RSS feed.
     $node->rss_elements[] = array(
       'key' => 'testElement',
@@ -72,7 +72,7 @@ function node_test_node_access_records($node) {
     return;
   }
   $grants = array();
-  if ($node->type == 'article') {
+  if ($node->type === 'article') {
     // Create grant in arbitrary article_realm for article nodes.
     $grants[] = array(
       'realm' => 'test_article_realm',
@@ -83,7 +83,7 @@ function node_test_node_access_records($node) {
       'priority' => 0,
     );
   }
-  elseif ($node->type == 'page') {
+  elseif ($node->type === 'page') {
     // Create grant in arbitrary page_realm for page nodes.
     $grants[] = array(
       'realm' => 'test_page_realm',
@@ -104,7 +104,7 @@ function node_test_node_access_records_alter(&$grants, $node) {
   if (!empty($grants)) {
     foreach ($grants as $key => $grant) {
       // Alter grant from test_page_realm to test_alter_realm and modify the gid.
-      if ($grant['realm'] == 'test_page_realm' && $node->promote) {
+      if ($grant['realm'] === 'test_page_realm' && $node->promote) {
         $grants[$key]['realm'] = 'test_alter_realm';
         $grants[$key]['gid'] = 2;
       }
@@ -124,14 +124,14 @@ function node_test_node_grants_alter(&$grants, $account, $op) {
  * Implements hook_node_presave().
  */
 function node_test_node_presave($node) {
-  if ($node->title == 'testing_node_presave') {
+  if ($node->title === 'testing_node_presave') {
     // Sun, 19 Nov 1978 05:00:00 GMT
     $node->created = 280299600;
     // Drupal 1.0 release.
     $node->changed = 979534800;
   }
   // Determine changes.
-  if (!empty($node->original) && $node->original->title == 'test_changes') {
+  if (!empty($node->original) && $node->original->title === 'test_changes') {
     if ($node->original->title != $node->title) {
       $node->title .= '_presave';
     }
@@ -143,7 +143,7 @@ function node_test_node_presave($node) {
  */
 function node_test_node_update($node) {
   // Determine changes on update.
-  if (!empty($node->original) && $node->original->title == 'test_changes') {
+  if (!empty($node->original) && $node->original->title === 'test_changes') {
     if ($node->original->title != $node->title) {
       $node->title .= '_update';
     }
diff --git a/core/modules/node/tests/modules/node_test_exception/node_test_exception.module b/core/modules/node/tests/modules/node_test_exception/node_test_exception.module
index 0fe9f35..1686249 100644
--- a/core/modules/node/tests/modules/node_test_exception/node_test_exception.module
+++ b/core/modules/node/tests/modules/node_test_exception/node_test_exception.module
@@ -10,7 +10,7 @@
  * Implements hook_node_insert().
  */
 function node_test_exception_node_insert($node) {
-  if ($node->title == 'testing_transaction_exception') {
+  if ($node->title === 'testing_transaction_exception') {
     throw new Exception('Test exception for rollback.');
   }
 }
diff --git a/core/modules/openid/openid.api.php b/core/modules/openid/openid.api.php
index bd286ff..4380c27 100644
--- a/core/modules/openid/openid.api.php
+++ b/core/modules/openid/openid.api.php
@@ -19,7 +19,7 @@
  *   A service array as returned by openid_discovery().
  */
 function hook_openid_request_alter(&$request, $service) {
-  if ($request['openid.mode'] == 'checkid_setup') {
+  if ($request['openid.mode'] === 'checkid_setup') {
     $request['openid.identity'] = 'http://myname.myopenid.com/';
   }
 }
diff --git a/core/modules/openid/openid.inc b/core/modules/openid/openid.inc
index 518dc8a..190c532 100644
--- a/core/modules/openid/openid.inc
+++ b/core/modules/openid/openid.inc
@@ -207,7 +207,7 @@ function _openid_select_service(array $services) {
       if ($type_priority
           && (!$selected_service
               || $type_priority < $selected_type_priority
-              || ($type_priority == $selected_type_priority && $service['priority'] < $selected_service['priority']))) {
+              || ($type_priority === $selected_type_priority && $service['priority'] < $selected_service['priority']))) {
         $selected_service = $service;
         $selected_type_priority = $type_priority;
       }
@@ -320,7 +320,7 @@ function _openid_encode_message($message) {
   foreach ($items as $item) {
     $parts = explode(':', $item, 2);
 
-    if (count($parts) == 2) {
+    if (count($parts) === 2) {
       if ($encoded_message != '') {
         $encoded_message .= '&';
       }
@@ -342,7 +342,7 @@ function _openid_parse_message($message) {
   foreach ($items as $item) {
     $parts = explode(':', $item, 2);
 
-    if (count($parts) == 2) {
+    if (count($parts) === 2) {
       $parsed_message[$parts[0]] = $parts[1];
     }
   }
@@ -392,7 +392,7 @@ function _openid_meta_httpequiv($html) {
     if (isset($html_element->head->meta)) {
       foreach ($html_element->head->meta as $meta) {
         // The http-equiv attribute is case-insensitive.
-        if (strtolower(trim($meta['http-equiv'])) == 'x-xrds-location') {
+        if (strtolower(trim($meta['http-equiv'])) === 'x-xrds-location') {
           return trim($meta['content']);
         }
       }
@@ -454,7 +454,7 @@ function _openid_dh_long_to_binary($long) {
     return FALSE;
   }
 
-  if ($cmp == 0) {
+  if ($cmp === 0) {
     return "\x00";
   }
 
@@ -498,7 +498,7 @@ function _openid_dh_rand($stop) {
     list($duplicate, $nbytes) = $duplicate_cache[$rbytes];
   }
   else {
-    if ($rbytes[0] == "\x00") {
+    if ($rbytes[0] === "\x00") {
       $nbytes = strlen($rbytes) - 1;
     }
     else {
@@ -553,7 +553,7 @@ function _openid_response($str = NULL) {
   if (isset($_SERVER['REQUEST_METHOD'])) {
     $data = _openid_get_params($_SERVER['QUERY_STRING']);
 
-    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
       $str = file_get_contents('php://input');
 
       $post = array();
@@ -575,7 +575,7 @@ function _openid_get_params($str) {
   foreach ($chunks as $chunk) {
     $parts = explode("=", $chunk, 2);
 
-    if (count($parts) == 2) {
+    if (count($parts) === 2) {
       list($k, $v) = $parts;
       $data[$k] = urldecode($v);
     }
@@ -628,7 +628,7 @@ function openid_extract_namespace($response, $extension_namespace, $fallback_pre
   // Find the namespace prefix.
   $prefix = $fallback_prefix;
   foreach ($response as $key => $value) {
-    if ($value == $extension_namespace && preg_match('/^openid\.ns\.([^.]+)$/', $key, $matches)) {
+    if ($value === $extension_namespace && preg_match('/^openid\.ns\.([^.]+)$/', $key, $matches)) {
       $prefix = $matches[1];
       if ($only_signed && !in_array('ns.' . $matches[1], $signed_keys)) {
         // The namespace was defined but was not signed as required. In this
diff --git a/core/modules/openid/openid.install b/core/modules/openid/openid.install
index 830f990..e8d90bf 100644
--- a/core/modules/openid/openid.install
+++ b/core/modules/openid/openid.install
@@ -89,7 +89,7 @@ function openid_schema() {
 function openid_requirements($phase) {
   $requirements = array();
 
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     // Check for the PHP BC Math library.
     if (!function_exists('bcadd') && !function_exists('gmp_add')) {
       $requirements['openid_math'] = array(
diff --git a/core/modules/openid/openid.js b/core/modules/openid/openid.js
index 0e673f3..7e49d51 100644
--- a/core/modules/openid/openid.js
+++ b/core/modules/openid/openid.js
@@ -12,7 +12,7 @@ Drupal.behaviors.openid = {
       if (cookie) {
         $('#edit-openid-identifier').val(cookie);
       }
-      if ($('#edit-openid-identifier').val() || location.hash == '#openid-login') {
+      if ($('#edit-openid-identifier').val() || location.hash === '#openid-login') {
         $('#edit-openid-identifier').addClass('openid-processed');
         loginElements.hide();
         // Use .css('display', 'block') instead of .show() to be Konqueror friendly.
diff --git a/core/modules/openid/openid.module b/core/modules/openid/openid.module
index a3df38f..79ee275 100644
--- a/core/modules/openid/openid.module
+++ b/core/modules/openid/openid.module
@@ -41,7 +41,7 @@ function openid_menu() {
  */
 function openid_menu_site_status_alter(&$menu_site_status, $path) {
   // Allow access to openid/authenticate even if site is in offline mode.
-  if ($menu_site_status == MENU_SITE_OFFLINE && user_is_anonymous() && $path == 'openid/authenticate') {
+  if ($menu_site_status === MENU_SITE_OFFLINE && user_is_anonymous() && $path === 'openid/authenticate') {
     $menu_site_status = MENU_SITE_ONLINE;
   }
 }
@@ -359,7 +359,7 @@ function openid_begin($claimed_id, $return_to = '', $form_values = array()) {
   }
   $request = openid_authentication_request($claimed_id, $identity, $return_to, $assoc_handle, $service);
 
-  if ($service['version'] == 2) {
+  if ($service['version'] === 2) {
     openid_redirect($service['uri'], $request);
   }
   else {
@@ -379,7 +379,7 @@ function openid_begin($claimed_id, $return_to = '', $form_values = array()) {
 function openid_complete($response = array()) {
   module_load_include('inc', 'openid');
 
-  if (count($response) == 0) {
+  if (count($response) === 0) {
     $response = _openid_response();
   }
 
@@ -391,7 +391,7 @@ function openid_complete($response = array()) {
     unset($_SESSION['openid']['service']);
     unset($_SESSION['openid']['claimed_id']);
     if (isset($response['openid.mode'])) {
-      if ($response['openid.mode'] == 'cancel') {
+      if ($response['openid.mode'] === 'cancel') {
         $response['status'] = 'cancel';
       }
       else {
@@ -405,7 +405,7 @@ function openid_complete($response = array()) {
           if (!empty($service['claimed_id'])) {
             $response['openid.claimed_id'] = $service['claimed_id'];
           }
-          elseif ($service['version'] == 2) {
+          elseif ($service['version'] === 2) {
             // Returned Claimed Identifier could contain unique fragment
             // identifier to allow identifier recycling so we need to preserve
             // it in the response.
@@ -514,7 +514,7 @@ function _openid_xri_discovery($claimed_id) {
     if (!empty($discovery['services']) && is_array($discovery['services'])) {
       foreach ($discovery['services'] as $i => &$service) {
         $status = $service['xrd']->children(OPENID_NS_XRD)->Status;
-        if ($status && $status->attributes()->cid == 'verified') {
+        if ($status && $status->attributes()->cid === 'verified') {
           $service['claimed_id'] = openid_normalize((string)$service['xrd']->children(OPENID_NS_XRD)->CanonicalID);
         }
         else {
@@ -545,7 +545,7 @@ function _openid_xrds_discovery($claimed_id) {
 
   $xrds_url = $claimed_id;
   $scheme = @parse_url($xrds_url, PHP_URL_SCHEME);
-  if ($scheme == 'http' || $scheme == 'https') {
+  if ($scheme === 'http' || $scheme === 'https') {
     // For regular URLs, try Yadis resolution first, then HTML-based discovery
     $headers = array('Accept' => 'application/xrds+xml');
     $result = drupal_http_request($xrds_url, array('headers' => $headers));
@@ -555,7 +555,7 @@ function _openid_xrds_discovery($claimed_id) {
     // reached, but drupal_http_request() doesn't return any error.
     // @todo Remove the check for 200 HTTP result code after the following issue
     // will be fixed: http://drupal.org/node/1096890.
-    if (!isset($result->error) && $result->code == 200) {
+    if (!isset($result->error) && $result->code === 200) {
 
       // Replace the user-entered claimed_id if we received a redirect.
       if (!empty($result->redirect_url)) {
@@ -585,7 +585,7 @@ function _openid_xrds_discovery($claimed_id) {
       }
 
       // Check for HTML delegation
-      if (count($services) == 0) {
+      if (count($services) === 0) {
         // Look for 2.0 links
         $uri = _openid_link_href('openid2.provider', $result->data);
         $identity = _openid_link_href('openid2.local_id', $result->data);
@@ -669,11 +669,11 @@ function openid_association($op_endpoint) {
     }
 
     $assoc_response = _openid_parse_message($assoc_result->data);
-    if (isset($assoc_response['mode']) && $assoc_response['mode'] == 'error') {
+    if (isset($assoc_response['mode']) && $assoc_response['mode'] === 'error') {
       return FALSE;
     }
 
-    if ($assoc_response['session_type'] == 'DH-SHA1') {
+    if ($assoc_response['session_type'] === 'DH-SHA1') {
       $spub = _openid_dh_base64_to_long($assoc_response['dh_server_public']);
       $enc_mac_key = base64_decode($assoc_response['enc_mac_key']);
       $shared = _openid_math_powmod($spub, $private, $mod);
@@ -777,7 +777,7 @@ function openid_association_request($public) {
     'openid.assoc_type' => 'HMAC-SHA1'
   );
 
-  if ($request['openid.session_type'] == 'DH-SHA1' || $request['openid.session_type'] == 'DH-SHA256') {
+  if ($request['openid.session_type'] === 'DH-SHA1' || $request['openid.session_type'] === 'DH-SHA256') {
     $cpub = _openid_dh_long_to_base64($public);
     $request['openid.dh_consumer_public'] = $cpub;
   }
@@ -797,7 +797,7 @@ function openid_authentication_request($claimed_id, $identity, $return_to = '',
     'openid.return_to' => $return_to,
   );
 
-  if ($service['version'] == 2) {
+  if ($service['version'] === 2) {
     $request['openid.ns'] = OPENID_NS_2_0;
     $request['openid.claimed_id'] = $claimed_id;
     $request['openid.realm'] = $base_url .'/';
@@ -904,7 +904,7 @@ function openid_verify_assertion($service, $response) {
     if (!isset($result->error)) {
       $response = _openid_parse_message($result->data);
 
-      if (strtolower(trim($response['is_valid'])) == 'true') {
+      if (strtolower(trim($response['is_valid'])) === 'true') {
         $valid = TRUE;
         if (!empty($response['invalidate_handle'])) {
           // This association handle has expired on the OP side, remove it from the
@@ -939,7 +939,7 @@ function openid_verify_assertion($service, $response) {
  * @see http://openid.net/specs/openid-authentication-2_0.html#rfc.section.11.4
  */
 function openid_verify_assertion_signature($service, $association, $response) {
-  if ($service['version'] == 2) {
+  if ($service['version'] === 2) {
     // OpenID Authentication 2.0, section 10.1:
     // These keys must always be signed.
     $mandatory_keys = array('op_endpoint', 'return_to', 'response_nonce', 'assoc_handle');
@@ -1013,7 +1013,7 @@ function openid_verify_assertion_nonce($service, $response) {
     ':idp_endpoint_uri' => $service['uri'],
   ))->fetchField();
 
-  if ($count_used == 1) {
+  if ($count_used === 1) {
     return TRUE;
   }
   else {
diff --git a/core/modules/openid/openid.pages.inc b/core/modules/openid/openid.pages.inc
index 885fe1d..375ca36 100644
--- a/core/modules/openid/openid.pages.inc
+++ b/core/modules/openid/openid.pages.inc
@@ -32,7 +32,7 @@ function openid_user_identities($account) {
 
   // Check to see if we got a response
   $response = openid_complete();
-  if ($response['status'] == 'success') {
+  if ($response['status'] === 'success') {
     $identity = $response['openid.claimed_id'];
     $query = db_insert('authmap')
       ->fields(array(
diff --git a/core/modules/openid/openid.test b/core/modules/openid/openid.test
index 7a4c9cf..51cfc09 100644
--- a/core/modules/openid/openid.test
+++ b/core/modules/openid/openid.test
@@ -339,7 +339,7 @@ class OpenIDFunctionalTestCase extends OpenIDWebTestCase {
     }
 
     // OpenID 1 used a HTTP redirect, OpenID 2 uses a HTML form that is submitted automatically using JavaScript.
-    if ($version == 2) {
+    if ($version === 2) {
       // Check we are on the OpenID redirect form.
       $this->assertTitle(t('OpenID redirect'), t('OpenID redirect page was displayed.'));
 
diff --git a/core/modules/openid/tests/openid_test.module b/core/modules/openid/tests/openid_test.module
index 5bd2f4d..fe680d6 100644
--- a/core/modules/openid/tests/openid_test.module
+++ b/core/modules/openid/tests/openid_test.module
@@ -81,7 +81,7 @@ function openid_test_menu() {
  */
 function openid_test_menu_site_status_alter(&$menu_site_status, $path) {
   // Allow access to openid endpoint and identity even in offline mode.
-  if ($menu_site_status == MENU_SITE_OFFLINE && user_is_anonymous() && in_array($path, array('openid-test/yadis/xrds', 'openid-test/endpoint'))) {
+  if ($menu_site_status === MENU_SITE_OFFLINE && user_is_anonymous() && in_array($path, array('openid-test/yadis/xrds', 'openid-test/endpoint'))) {
     $menu_site_status = MENU_SITE_ONLINE;
   }
 }
@@ -90,11 +90,11 @@ function openid_test_menu_site_status_alter(&$menu_site_status, $path) {
  * Menu callback; XRDS document that references the OP Endpoint URL.
  */
 function openid_test_yadis_xrds() {
-  if ($_SERVER['HTTP_ACCEPT'] == 'application/xrds+xml') {
+  if ($_SERVER['HTTP_ACCEPT'] === 'application/xrds+xml') {
     // Only respond to XRI requests for one specific XRI. The is used to verify
     // that the XRI has been properly encoded. The "+" sign in the _xrd_r query
     // parameter is decoded to a space by PHP.
-    if (arg(3) == 'xri') {
+    if (arg(3) === 'xri') {
       if (variable_get('clean_url', 0)) {
         if (arg(4) != '@example*résumé;%25' || $_GET['_xrd_r'] != 'application/xrds xml') {
           drupal_not_found();
@@ -137,7 +137,7 @@ function openid_test_yadis_xrds() {
             <URI>http://example.com/this-has-too-low-priority</URI>
           </Service>
           ';
-    if (arg(3) == 'server') {
+    if (arg(3) === 'server') {
       print '
           <Service>
             <Type>http://specs.openid.net/auth/2.0/server</Type>
@@ -148,7 +148,7 @@ function openid_test_yadis_xrds() {
             <URI>' . url('openid-test/endpoint', array('absolute' => TRUE)) . '</URI>
           </Service>';
     }
-    elseif (arg(3) == 'delegate') {
+    elseif (arg(3) === 'delegate') {
       print '
           <Service priority="0">
             <Type>http://specs.openid.net/auth/2.0/signon</Type>
@@ -230,7 +230,7 @@ function openid_test_endpoint() {
  * Menu callback; redirect during Normalization/Discovery.
  */
 function openid_test_redirect($count = 0) {
-  if ($count == 0) {
+  if ($count === 0) {
     $url = variable_get('openid_test_redirect_url', '');
   }
   else {
diff --git a/core/modules/overlay/overlay-child.js b/core/modules/overlay/overlay-child.js
index ff111d8..c5480d2 100644
--- a/core/modules/overlay/overlay-child.js
+++ b/core/modules/overlay/overlay-child.js
@@ -31,7 +31,7 @@ Drupal.behaviors.overlayChild = {
       // Use setTimeout to close the child window from a separate thread,
       // because the current one is busy processing Drupal behaviors.
       setTimeout(function () {
-        if (typeof settings.redirect == 'string') {
+        if (typeof settings.redirect === 'string') {
           parent.Drupal.overlay.redirect(settings.redirect);
         }
         else {
@@ -114,7 +114,7 @@ Drupal.overlayChild.behaviors.parseForms = function (context, settings) {
     // Obtain the action attribute of the form.
     var action = $(this).attr('action');
     // Keep internal forms in the overlay.
-    if (action == undefined || (action.indexOf('http') != 0 && action.indexOf('https') != 0)) {
+    if (action === undefined || (action.indexOf('http') != 0 && action.indexOf('https') != 0)) {
       action += (action.indexOf('?') > -1 ? '&' : '?') + 'render=overlay';
       $(this).attr('action', action);
     }
diff --git a/core/modules/overlay/overlay-parent.js b/core/modules/overlay/overlay-parent.js
index 19d2d64..6fce932 100644
--- a/core/modules/overlay/overlay-parent.js
+++ b/core/modules/overlay/overlay-parent.js
@@ -227,7 +227,7 @@ Drupal.overlay.redirect = function (url) {
   var link = $(url.link(url)).get(0);
 
   // If the link is already open, force the hashchange event to simulate reload.
-  if (window.location.href == link.href) {
+  if (window.location.href === link.href) {
     $(window).triggerHandler('hashchange.drupal-overlay');
   }
 
@@ -264,7 +264,7 @@ Drupal.overlay.loadChild = function (event) {
   var iframe = event.data.self;
   var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
   var iframeWindow = iframeDocument.defaultView || iframeDocument.parentWindow;
-  if (iframeWindow.location == 'about:blank') {
+  if (iframeWindow.location === 'about:blank') {
     return;
   }
 
@@ -529,7 +529,7 @@ Drupal.overlay.eventhandlerRestoreDisplacedElements = function (event) {
 Drupal.overlay.eventhandlerOverrideLink = function (event) {
   // In some browsers the click event isn't fired for right-clicks. Use the
   // mouseup event for right-clicks and the click event for everything else.
-  if ((event.type == 'click' && event.button == 2) || (event.type == 'mouseup' && event.button != 2)) {
+  if ((event.type === 'click' && event.button === 2) || (event.type === 'mouseup' && event.button != 2)) {
     return;
   }
 
@@ -561,21 +561,21 @@ Drupal.overlay.eventhandlerOverrideLink = function (event) {
   if (typeof href !== 'undefined' && href !== '' && (/^https?\:/).test(target.protocol)) {
     var anchor = href.replace(target.ownerDocument.location.href, '');
     // Skip anchor links.
-    if (anchor.length == 0 || anchor.charAt(0) == '#') {
+    if (anchor.length === 0 || anchor.charAt(0) === '#') {
       return;
     }
     // Open admin links in the overlay.
     else if (this.isAdminLink(href)) {
       // If the link contains the overlay-restore class and the overlay-context
       // state is set, also update the parent window's location.
-      var parentLocation = ($target.hasClass('overlay-restore') && typeof $.bbq.getState('overlay-context') == 'string')
+      var parentLocation = ($target.hasClass('overlay-restore') && typeof $.bbq.getState('overlay-context') === 'string')
         ? Drupal.settings.basePath + $.bbq.getState('overlay-context')
         : null;
       href = this.fragmentizeLink($target.get(0), parentLocation);
       // Only override default behavior when left-clicking and user is not
       // pressing the ALT, CTRL, META (Command key on the Macintosh keyboard)
       // or SHIFT key.
-      if (event.button == 0 && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
+      if (event.button === 0 && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
         // Redirect to a fragmentized href. This will trigger a hashchange event.
         this.redirect(href);
         // Prevent default action and further propagation of the event.
@@ -816,7 +816,7 @@ Drupal.overlay.resetActiveClass = function(activePath) {
 
     // A link matches if it is part of the active trail of activePath, except
     // for frontpage links.
-    if (linkDomain == windowDomain && (activePath + '/').indexOf(linkPath + '/') === 0 && (linkPath !== '' || activePath === '')) {
+    if (linkDomain === windowDomain && (activePath + '/').indexOf(linkPath + '/') === 0 && (linkPath !== '' || activePath === '')) {
       $(this).addClass('active');
     }
   });
@@ -834,7 +834,7 @@ Drupal.overlay.resetActiveClass = function(activePath) {
  *   The Drupal path.
  */
 Drupal.overlay.getPath = function (link, ignorePathFromQueryString) {
-  if (typeof link == 'string') {
+  if (typeof link === 'string') {
     // Create a native Link object, so we can use its object methods.
     link = $(link.link(link)).get(0);
   }
@@ -845,11 +845,11 @@ Drupal.overlay.getPath = function (link, ignorePathFromQueryString) {
     path = '/' + path;
   }
   path = path.replace(new RegExp(Drupal.settings.basePath + '(?:index.php)?'), '');
-  if (path == '' && !ignorePathFromQueryString) {
+  if (path === '' && !ignorePathFromQueryString) {
     // If the path appears empty, it might mean the path is represented in the
     // query string (clean URLs are not used).
     var match = new RegExp('([?&])q=(.+)([&#]|$)').exec(link.search);
-    if (match && match.length == 4) {
+    if (match && match.length === 4) {
       path = match[2];
     }
   }
diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module
index 144c2ab..b16aa1c 100644
--- a/core/modules/overlay/overlay.module
+++ b/core/modules/overlay/overlay.module
@@ -133,7 +133,7 @@ function overlay_init() {
       drupal_goto('<front>', array('fragment' => 'overlay=' . $current_path));
     }
 
-    if (isset($_GET['render']) && $_GET['render'] == 'overlay') {
+    if (isset($_GET['render']) && $_GET['render'] === 'overlay') {
       // If a previous page requested that we close the overlay, close it and
       // redirect to the final destination.
       if (isset($_SESSION['overlay_close_dialog'])) {
@@ -170,7 +170,7 @@ function overlay_exit() {
   // Check that we are in an overlay child page. Note that this should never
   // return TRUE on a cached page view, since the child mode is not set until
   // overlay_init() is called.
-  if (overlay_get_mode() == 'child') {
+  if (overlay_get_mode() === 'child') {
     // Load any markup that was stored earlier in the page request, via calls
     // to overlay_store_rendered_content(). If none was stored, this is not a
     // page request where we expect any changes to the overlay supplemental
@@ -232,14 +232,14 @@ function overlay_library_info() {
  * Implements hook_drupal_goto_alter().
  */
 function overlay_drupal_goto_alter(&$path, &$options, &$http_response_code) {
-  if (overlay_get_mode() == 'child') {
+  if (overlay_get_mode() === 'child') {
     // The authorize.php script bootstraps Drupal to a very low level, where
     // the PHP code that is necessary to close the overlay properly will not be
     // loaded. Therefore, if we are redirecting to authorize.php inside the
     // overlay, instead redirect back to the current page with instructions to
     // close the overlay there before redirecting to the final destination; see
     // overlay_init().
-    if ($path == system_authorized_get_url() || $path == system_authorized_batch_processing_url()) {
+    if ($path === system_authorized_get_url() || $path === system_authorized_batch_processing_url()) {
       $_SESSION['overlay_close_dialog'] = array($path, $options);
       $path = current_path();
       $options = drupal_get_query_parameters();
@@ -265,7 +265,7 @@ function overlay_drupal_goto_alter(&$path, &$options, &$http_response_code) {
  * @see overlay_get_mode()
  */
 function overlay_batch_alter(&$batch) {
-  if (overlay_get_mode() == 'child') {
+  if (overlay_get_mode() === 'child') {
     if (isset($batch['url_options']['query'])) {
       $batch['url_options']['query']['render'] = 'overlay';
     }
@@ -289,11 +289,11 @@ function overlay_page_alter(&$page) {
   }
 
   $mode = overlay_get_mode();
-  if ($mode == 'child') {
+  if ($mode === 'child') {
     // Add the overlay wrapper before the html wrapper.
     array_unshift($page['#theme_wrappers'], 'overlay');
   }
-  elseif ($mode == 'parent' && ($message = overlay_disable_message())) {
+  elseif ($mode === 'parent' && ($message = overlay_disable_message())) {
     $page['page_top']['disable_overlay'] = $message;
   }
 }
@@ -366,7 +366,7 @@ function overlay_disable_message() {
             'id' => 'overlay-dismiss-message',
             // If this message is being displayed outside the overlay, prevent
             // this link from opening the overlay.
-            'class' => (overlay_get_mode() == 'parent') ? array('overlay-exclude') : array(),
+            'class' => (overlay_get_mode() === 'parent') ? array('overlay-exclude') : array(),
           ),
         ),
       )
@@ -393,7 +393,7 @@ function theme_overlay_disable_message($variables) {
   // documents, but only the one in the child document is part of the tab order.
   foreach (array('profile_link', 'dismiss_message_link') as $key) {
     $element[$key]['#options']['attributes']['class'][] = 'element-invisible';
-    if (overlay_get_mode() == 'child') {
+    if (overlay_get_mode() === 'child') {
       $element[$key]['#options']['attributes']['class'][] = 'element-focusable';
     }
   }
@@ -436,7 +436,7 @@ function overlay_block_list_alter(&$blocks) {
  * Add default regions for the overlay.
  */
 function overlay_system_info_alter(&$info, $file, $type) {
-  if ($type == 'theme') {
+  if ($type === 'theme') {
     $info['overlay_regions'][] = 'content';
     $info['overlay_regions'][] = 'help';
   }
@@ -451,7 +451,7 @@ function overlay_system_info_alter(&$info, $file, $type) {
  * @see overlay_get_mode()
  */
 function overlay_preprocess_html(&$variables) {
-  if (overlay_get_mode() == 'child') {
+  if (overlay_get_mode() === 'child') {
     // Add overlay class, so themes can react to being displayed in the overlay.
     $variables['classes_array'][] = 'overlay';
   }
@@ -500,7 +500,7 @@ function template_process_overlay(&$variables) {
  * @see overlay_get_mode()
  */
 function overlay_preprocess_page(&$variables) {
-  if (overlay_get_mode() == 'child') {
+  if (overlay_get_mode() === 'child') {
     unset($variables['tabs']['#primary']);
   }
 }
@@ -641,7 +641,7 @@ function overlay_overlay_parent_initialize() {
   $path_prefixes = array();
   if (module_exists('language')) {
     language_negotiation_include();
-    if (variable_get('language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX) == LANGUAGE_NEGOTIATION_URL_PREFIX) {
+    if (variable_get('language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX) === LANGUAGE_NEGOTIATION_URL_PREFIX) {
       // Skip the empty string indicating the default language. We always accept
       // paths without a prefix.
       $path_prefixes = language_negotiation_url_prefixes();
diff --git a/core/modules/poll/poll.module b/core/modules/poll/poll.module
index c801579..f77fbc8 100644
--- a/core/modules/poll/poll.module
+++ b/core/modules/poll/poll.module
@@ -107,7 +107,7 @@ function poll_menu() {
  * Callback function to see if a node is acceptable for poll menu items.
  */
 function _poll_menu_access($node, $perm, $inspect_allowvotes) {
-  return user_access($perm) && ($node->type == 'poll') && ($node->allowvotes || !$inspect_allowvotes);
+  return user_access($perm) && ($node->type === 'poll') && ($node->allowvotes || !$inspect_allowvotes);
 }
 
 /**
@@ -219,7 +219,7 @@ function poll_field_extra_fields() {
 function poll_form($node, &$form_state) {
   global $user;
 
-  $admin = user_access('bypass node access') || user_access('edit any poll content') || (user_access('edit own poll content') && $user->uid == $node->uid);
+  $admin = user_access('bypass node access') || user_access('edit any poll content') || (user_access('edit own poll content') && $user->uid === $node->uid);
 
   $type = node_type_get_type($node);
 
@@ -453,7 +453,7 @@ function poll_validate($node, $form) {
  * Implements hook_field_attach_prepare_translation_alter().
  */
 function poll_field_attach_prepare_translation_alter(&$entity, $context) {
-  if ($context['entity_type'] == 'node' && $entity->type == 'poll') {
+  if ($context['entity_type'] === 'node' && $entity->type === 'poll') {
     $entity->choice = $context['source_entity']->choice;
     foreach ($entity->choice as $i => $choice) {
       $entity->choice[$i]['chvotes'] = 0;
@@ -727,7 +727,7 @@ function poll_view_voting($form, &$form_state, $node, $block = FALSE) {
  * Validation function for processing votes
  */
 function poll_view_voting_validate($form, &$form_state) {
-  if ($form_state['values']['choice'] == -1) {
+  if ($form_state['values']['choice'] === -1) {
     form_set_error( 'choice', t('Your vote could not be recorded because you did not select any of the choices.'));
   }
 }
@@ -776,7 +776,7 @@ function poll_vote($form, &$form_state) {
  * Implements hook_preprocess_block().
  */
 function poll_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'poll') {
+  if ($variables['block']->module === 'poll') {
     $variables['attributes_array']['role'] = 'complementary';
   }
 }
diff --git a/core/modules/poll/poll.test b/core/modules/poll/poll.test
index d6ed485..98481da 100644
--- a/core/modules/poll/poll.test
+++ b/core/modules/poll/poll.test
@@ -98,7 +98,7 @@ class PollWebTestCase extends DrupalWebTestCase {
    *     in subsequent invocations of this function.
    */
   function _pollGenerateEdit($title, array $choices, $index = 0) {
-    $max_new_choices = ($index == 0 ? 2 : 1);
+    $max_new_choices = ($index === 0 ? 2 : 1);
     $already_submitted_choices = array_slice($choices, 0, $index);
     $new_choices = array_values(array_slice($choices, $index, $max_new_choices));
 
@@ -720,7 +720,7 @@ class PollExpirationTestCase extends PollWebTestCase {
     $this->drupalGet("node/$poll_nid/edit");
     $this->assertField('runtime', t('Poll expiration setting found.'));
     $elements = $this->xpath('//select[@id="edit-runtime"]/option[@selected="selected"]');
-    $this->assertTrue(isset($elements[0]['value']) && $elements[0]['value'] == 0, t('Poll expiration set to unlimited.'));
+    $this->assertTrue(isset($elements[0]['value']) && $elements[0]['value'] === 0, t('Poll expiration set to unlimited.'));
 
     // Set the expiration to one week.
     $edit = array();
@@ -732,7 +732,7 @@ class PollExpirationTestCase extends PollWebTestCase {
     // Make sure that the changed expiration settings is kept.
     $this->drupalGet("node/$poll_nid/edit");
     $elements = $this->xpath('//select[@id="edit-runtime"]/option[@selected="selected"]');
-    $this->assertTrue(isset($elements[0]['value']) && $elements[0]['value'] == $poll_expiration, t('Poll expiration set to unlimited.'));
+    $this->assertTrue(isset($elements[0]['value']) && $elements[0]['value'] === $poll_expiration, t('Poll expiration set to unlimited.'));
 
     // Force a cron run. Since the expiration date has not yet been reached,
     // the poll should remain active.
diff --git a/core/modules/poll/poll.tokens.inc b/core/modules/poll/poll.tokens.inc
index 4226a69..270cf36 100644
--- a/core/modules/poll/poll.tokens.inc
+++ b/core/modules/poll/poll.tokens.inc
@@ -50,7 +50,7 @@ function poll_tokens($type, $tokens, array $data = array(), array $options = arr
 
   $replacements = array();
 
-  if ($type == 'node' && !empty($data['node']) && $data['node']->type == 'poll') {
+  if ($type === 'node' && !empty($data['node']) && $data['node']->type === 'poll') {
     $node = $data['node'];
 
     $total_votes = 0;
diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module
index 8f9c025..1e0c8a5 100644
--- a/core/modules/rdf/rdf.module
+++ b/core/modules/rdf/rdf.module
@@ -102,7 +102,7 @@ function rdf_get_namespaces() {
   // URIs.
   foreach ($rdf_namespaces as $prefix => $uri) {
     if (is_array($uri)) {
-      if (count(array_unique($uri)) == 1) {
+      if (count(array_unique($uri)) === 1) {
         // All namespaces declared for this prefix are the same, merge them all
         // into a single namespace.
         $rdf_namespaces[$prefix] = $uri[0];
@@ -758,7 +758,7 @@ function rdf_field_attach_view_alter(&$output, $context) {
   // Append term mappings on displayed taxonomy links.
   foreach (element_children($output) as $field_name) {
     $element = &$output[$field_name];
-    if ($element['#field_type'] == 'taxonomy_term_reference' && $element['#formatter'] == 'taxonomy_term_reference_link') {
+    if ($element['#field_type'] === 'taxonomy_term_reference' && $element['#formatter'] === 'taxonomy_term_reference_link') {
       foreach ($element['#items'] as $delta => $item) {
         // This function is invoked during entity preview when taxonomy term
         // reference items might contain free-tagging terms that do not exist
diff --git a/core/modules/rdf/rdf.test b/core/modules/rdf/rdf.test
index 6c7635f..149465d 100644
--- a/core/modules/rdf/rdf.test
+++ b/core/modules/rdf/rdf.test
@@ -626,7 +626,7 @@ class RdfTrackerAttributesTestCase extends DrupalWebTestCase {
   function _testBasicTrackerRdfaMarkup($node) {
     $url = url('node/' . $node->nid);
 
-    $user = ($node->uid == 0) ? 'Anonymous user' : 'Registered user';
+    $user = ($node->uid === 0) ? 'Anonymous user' : 'Registered user';
 
     // Navigate to tracker page.
     $this->drupalGet('tracker');
@@ -647,7 +647,7 @@ class RdfTrackerAttributesTestCase extends DrupalWebTestCase {
     // There should be an about attribute on logged in users and no about
     // attribute for anonymous users.
     $tracker_user = $this->xpath('//tr[@about=:url]//td[@rel="sioc:has_creator"]/*[@about]', array(':url' => $url));
-    if ($node->uid == 0) {
+    if ($node->uid === 0) {
       $this->assertTrue(empty($tracker_user), t('No about attribute is present on @user.', array('@user'=> $user)));
     }
     elseif ($node->uid > 0) {
diff --git a/core/modules/search/lib/Drupal/search/SearchQuery.php b/core/modules/search/lib/Drupal/search/SearchQuery.php
index 95103a6..fdd8bd5 100644
--- a/core/modules/search/lib/Drupal/search/SearchQuery.php
+++ b/core/modules/search/lib/Drupal/search/SearchQuery.php
@@ -196,7 +196,7 @@ class SearchQuery extends SelectExtender {
     // something between two spaces, optionally quoted.
     preg_match_all('/ (-?)("[^"]+"|[^" ]+)/i', ' ' .  $this->searchExpression , $keywords, PREG_SET_ORDER);
 
-    if (count($keywords) ==  0) {
+    if (count($keywords) ===  0) {
       return;
     }
 
@@ -216,7 +216,7 @@ class SearchQuery extends SelectExtender {
       }
       $phrase = FALSE;
       // Strip off phrase quotes.
-      if ($match[2]{0} == '"') {
+      if ($match[2]{0} === '"') {
         $match[2] = substr($match[2], 1, -1);
         $phrase = TRUE;
         $this->simple = FALSE;
@@ -229,12 +229,12 @@ class SearchQuery extends SelectExtender {
       // matching a phrase.
       $words = $phrase ? array($words) : preg_split('/ /', $words, -1, PREG_SPLIT_NO_EMPTY);
       // Negative matches.
-      if ($match[1] == '-') {
+      if ($match[1] === '-') {
         $this->keys['negative'] = array_merge($this->keys['negative'], $words);
       }
       // OR operator: instead of a single keyword, we store an array of all
       // OR'd keywords.
-      elseif ($match[2] == 'OR' && count($this->keys['positive'])) {
+      elseif ($match[2] === 'OR' && count($this->keys['positive'])) {
         $last = array_pop($this->keys['positive']);
         // Starting a new OR?
         if (!is_array($last)) {
@@ -246,14 +246,14 @@ class SearchQuery extends SelectExtender {
         continue;
       }
       // AND operator: implied, so just ignore it.
-      elseif ($match[2] == 'AND' || $match[2] == 'and') {
+      elseif ($match[2] === 'AND' || $match[2] === 'and') {
         $warning = $match[2];
         continue;
       }
 
       // Plain keyword.
       else {
-        if ($match[2] == 'or') {
+        if ($match[2] === 'or') {
           $warning = $match[2];
         }
         if ($or) {
@@ -311,7 +311,7 @@ class SearchQuery extends SelectExtender {
       $this->simple = FALSE;
     }
 
-    if ($warning == 'or') {
+    if ($warning === 'or') {
       drupal_set_message(t('Search for either of the two terms with uppercase <strong>OR</strong>. For example, <strong>cats OR dogs</strong>.'));
     }
   }
@@ -351,7 +351,7 @@ class SearchQuery extends SelectExtender {
   public function executeFirstPass() {
     $this->parseSearchExpression();
 
-    if (count($this->words) == 0) {
+    if (count($this->words) === 0) {
       form_set_error('keys', format_plural(variable_get('minimum_word_size', 3), 'You must include at least one positive keyword with 1 character or more.', 'You must include at least one positive keyword with @count characters or more.'));
       return FALSE;
     }
@@ -471,7 +471,7 @@ class SearchQuery extends SelectExtender {
     // Convert scores to an expression.
     $this->addExpression('SUM(' . implode(' + ', $this->scores) . ')', 'calculated_score', $this->scoresArguments);
 
-    if (count($this->getOrderBy()) == 0) {
+    if (count($this->getOrderBy()) === 0) {
       // Add default order after adding the expression.
       $this->orderBy('calculated_score', 'DESC');
     }
diff --git a/core/modules/search/search.admin.inc b/core/modules/search/search.admin.inc
index fda14ee..efa1937 100644
--- a/core/modules/search/search.admin.inc
+++ b/core/modules/search/search.admin.inc
@@ -164,7 +164,7 @@ function search_admin_settings_submit($form, &$form_state) {
   }
   $current_modules = variable_get('search_active_modules', array('node', 'user'));
   // Check whether we are resetting the values.
-  if ($form_state['triggering_element']['#value'] == t('Reset to defaults')) {
+  if ($form_state['triggering_element']['#value'] === t('Reset to defaults')) {
     $new_modules = array('node', 'user');
   }
   else {
diff --git a/core/modules/search/search.module b/core/modules/search/search.module
index 587ef43..6e75f73 100644
--- a/core/modules/search/search.module
+++ b/core/modules/search/search.module
@@ -157,7 +157,7 @@ function search_block_view($delta = '') {
  * Implements hook_preprocess_block().
  */
 function search_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'search' && $variables['block']->delta == 'form') {
+  if ($variables['block']->module === 'search' && $variables['block']->delta === 'form') {
     $variables['attributes_array']['role'] = 'search';
     $variables['content_attributes_array']['class'][] = 'container-inline';
   }
@@ -212,7 +212,7 @@ function search_menu() {
         'access arguments' => array($module),
         'type' => MENU_LOCAL_TASK,
         'file' => 'search.pages.inc',
-        'weight' => $module == $default_info['module'] ? -10 : 0,
+        'weight' => $module === $default_info['module'] ? -10 : 0,
       );
       $items["$path/%menu_tail"] = array(
         'title' => $search_info['title'],
@@ -315,7 +315,7 @@ function _search_menu_access($name) {
  *   from the search index.
  */
 function search_reindex($sid = NULL, $module = NULL, $reindex = FALSE) {
-  if ($module == NULL && $sid == NULL) {
+  if ($module === NULL && $sid === NULL) {
     module_invoke_all('search_reset');
   }
   else {
@@ -512,7 +512,7 @@ function search_index_split($text) {
   $last = &drupal_static(__FUNCTION__);
   $lastsplit = &drupal_static(__FUNCTION__ . ':lastsplit');
 
-  if ($last == $text) {
+  if ($last === $text) {
     return $lastsplit;
   }
   // Process words
@@ -608,7 +608,7 @@ function search_index($sid, $module, $text) {
       list($tagname) = explode(' ', $value, 2);
       $tagname = drupal_strtolower($tagname);
       // Closing or opening tag?
-      if ($tagname[0] == '/') {
+      if ($tagname[0] === '/') {
         $tagname = substr($tagname, 1);
         // If we encounter unexpected tags, reset score to avoid incorrect boosting.
         if (!count($tagstack) || $tagstack[0] != $tagname) {
@@ -619,12 +619,12 @@ function search_index($sid, $module, $text) {
           // Remove from tag stack and decrement score
           $score = max(1, $score - $tags[array_shift($tagstack)]);
         }
-        if ($tagname == 'a') {
+        if ($tagname === 'a') {
           $link = FALSE;
         }
       }
       else {
-        if (isset($tagstack[0]) && $tagstack[0] == $tagname) {
+        if (isset($tagstack[0]) && $tagstack[0] === $tagname) {
           // None of the tags we look for make sense when nested identically.
           // If they are, it's probably broken HTML.
           $tagstack = array();
@@ -635,7 +635,7 @@ function search_index($sid, $module, $text) {
           array_unshift($tagstack, $tagname);
           $score += $tags[$tagname];
         }
-        if ($tagname == 'a') {
+        if ($tagname === 'a') {
           // Check if link points to a node on this site
           if (preg_match($node_regexp, $value, $match)) {
             $path = drupal_get_normal_path($match[1]);
@@ -1045,7 +1045,7 @@ function search_box_form_submit($form, &$form_state) {
   // because that results in a confusing error message.  It would say a plain
   // "field is required" because the search keywords field has no title.
   // The error message would also complain about a missing #title field.)
-  if ($form_state['values']['search_block_form'] == '') {
+  if ($form_state['values']['search_block_form'] === '') {
     form_set_error('keys', t('Please enter some keywords.'));
   }
 
@@ -1128,7 +1128,7 @@ function search_excerpt($keys, $text) {
   $length = 0;
   while ($length < 256 && count($workkeys)) {
     foreach ($workkeys as $k => $key) {
-      if (strlen($key) == 0) {
+      if (strlen($key) === 0) {
         unset($workkeys[$k]);
         unset($keys[$k]);
         continue;
@@ -1185,7 +1185,7 @@ function search_excerpt($keys, $text) {
     }
   }
 
-  if (count($ranges) == 0) {
+  if (count($ranges) === 0) {
     // We didn't find any keyword matches, so just return the first part of the
     // text. We also need to re-encode any HTML special characters that we
     // entity-decoded above.
@@ -1303,7 +1303,7 @@ function search_simplify_excerpt_match($key, $text, $offset, $boundary) {
       $length = strlen($window);
       for ($i = 1; $i <= $length; $i++) {
         $keyfound = substr($text, $value[1], $i);
-        if ($simplified_key == search_simplify($keyfound)) {
+        if ($simplified_key === search_simplify($keyfound)) {
           break;
         }
       }
diff --git a/core/modules/search/search.pages.inc b/core/modules/search/search.pages.inc
index ff0d271..21598d1 100644
--- a/core/modules/search/search.pages.inc
+++ b/core/modules/search/search.pages.inc
@@ -150,7 +150,7 @@ function search_form_validate($form, &$form_state) {
  */
 function search_form_submit($form, &$form_state) {
   $keys = $form_state['values']['processed_keys'];
-  if ($keys == '') {
+  if ($keys === '') {
     form_set_error('keys', t('Please enter some keywords.'));
     // Fall through to the form redirect.
   }
diff --git a/core/modules/search/search.test b/core/modules/search/search.test
index 8944475..cf3d896 100644
--- a/core/modules/search/search.test
+++ b/core/modules/search/search.test
@@ -309,7 +309,7 @@ class SearchPageText extends SearchWebTestCase {
     $keys = array();
     for ($i = 0; $i < $limit + 1; $i++) {
       $keys[] = $this->randomName(3);
-      if ($i % 2 == 0) {
+      if ($i % 2 === 0) {
         $keys[] = 'OR';
       }
     }
@@ -354,7 +354,7 @@ class SearchAdvancedSearchForm extends SearchWebTestCase {
    * Test using the advanced search form to limit search to nodes of type "Basic page".
    */
   function testNodeType() {
-    $this->assertTrue($this->node->type == 'page', t('Node type is Basic page.'));
+    $this->assertTrue($this->node->type === 'page', t('Node type is Basic page.'));
 
     // Assert that the dummy title doesn't equal the real title.
     $dummy_title = 'Lorem ipsum';
@@ -410,7 +410,7 @@ class SearchRankingTestCase extends SearchWebTestCase {
         'body' => array(LANGUAGE_NOT_SPECIFIED => array(array('value' => "Drupal's search rocks"))),
       );
       foreach (array(0, 1) as $num) {
-        if ($num == 1) {
+        if ($num === 1) {
           switch ($node_rank) {
             case 'sticky':
             case 'promote':
@@ -458,7 +458,7 @@ class SearchRankingTestCase extends SearchWebTestCase {
     foreach ($node_ranks as $node_rank) {
       // Disable all relevancy rankings except the one we are testing.
       foreach ($node_ranks as $var) {
-        variable_set('node_rank_' . $var, $var == $node_rank ? 10 : 0);
+        variable_set('node_rank_' . $var, $var === $node_rank ? 10 : 0);
       }
 
       // Do the search and assert the results.
@@ -523,7 +523,7 @@ class SearchRankingTestCase extends SearchWebTestCase {
     // Test the ranking of each tag.
     foreach ($sorted_tags as $tag_rank => $tag) {
       // Assert the results.
-      if ($tag == 'notag') {
+      if ($tag === 'notag') {
         $this->assertEqual($set[$tag_rank]['node']->nid, $nodes[$tag]->nid, 'Search tag ranking for plain text order.');
       } else {
         $this->assertEqual($set[$tag_rank]['node']->nid, $nodes[$tag]->nid, 'Search tag ranking for "&lt;' . $sorted_tags[$tag_rank] . '&gt;" order.');
@@ -586,7 +586,7 @@ class SearchRankingTestCase extends SearchWebTestCase {
     // disabled.
     $node_ranks = array('sticky', 'promote', 'relevance', 'recent', 'comments', 'views');
     foreach ($node_ranks as $var) {
-      $value = ($var == 'sticky' || $var == 'comments') ? 10 : 0;
+      $value = ($var === 'sticky' || $var === 'comments') ? 10 : 0;
       variable_set('node_rank_' . $var, $value);
     }
 
@@ -1514,7 +1514,7 @@ class SearchConfigSettingsForm extends SearchWebTestCase {
       $info = $module_info[$module];
       $edit = array();
       foreach ($modules as $other) {
-        $edit['search_active_modules[' . $other . ']'] = (($other == $module) ? $module : FALSE);
+        $edit['search_active_modules[' . $other . ']'] = (($other === $module) ? $module : FALSE);
       }
       $edit['search_default_module'] = $module;
       $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration'));
diff --git a/core/modules/shortcut/shortcut.admin.inc b/core/modules/shortcut/shortcut.admin.inc
index 75c12b4..0bf9a7f 100644
--- a/core/modules/shortcut/shortcut.admin.inc
+++ b/core/modules/shortcut/shortcut.admin.inc
@@ -64,7 +64,7 @@ function shortcut_set_switch($form, &$form_state, $account = NULL) {
 
     $form['set'] = array(
       '#type' => 'radios',
-      '#title' => $user->uid == $account->uid ? t('Choose a set of shortcuts to use') : t('Choose a set of shortcuts for this user'),
+      '#title' => $user->uid === $account->uid ? t('Choose a set of shortcuts to use') : t('Choose a set of shortcuts for this user'),
       '#options' => $options,
       '#default_value' => $current_set->set_name,
     );
@@ -107,9 +107,9 @@ function shortcut_set_switch($form, &$form_state, $account = NULL) {
  * Validation handler for shortcut_set_switch().
  */
 function shortcut_set_switch_validate($form, &$form_state) {
-  if ($form_state['values']['set'] == 'new') {
+  if ($form_state['values']['set'] === 'new') {
     // Check to prevent creating a shortcut set with an empty title.
-    if (trim($form_state['values']['new']) == '') {
+    if (trim($form_state['values']['new']) === '') {
       form_set_error('new', t('The new set name is required.'));
     }
     // Check to prevent a duplicate title.
@@ -126,7 +126,7 @@ function shortcut_set_switch_submit($form, &$form_state) {
   global $user;
   $account = $form_state['values']['account'];
 
-  if ($form_state['values']['set'] == 'new') {
+  if ($form_state['values']['set'] === 'new') {
     // Save a new shortcut set with links copied from the user's default set.
     $default_set = shortcut_default_set($account);
     $set = (object) array(
@@ -139,7 +139,7 @@ function shortcut_set_switch_submit($form, &$form_state) {
       '%set_name' => $set->title,
       '@switch-url' => url(current_path()),
     );
-    if ($account->uid == $user->uid) {
+    if ($account->uid === $user->uid) {
       // Only administrators can create new shortcut sets, so we know they have
       // access to switch back.
       drupal_set_message(t('You are now using the new %set_name shortcut set. You can edit it from this page or <a href="@switch-url">switch back to a different one.</a>', $replacements));
@@ -156,7 +156,7 @@ function shortcut_set_switch_submit($form, &$form_state) {
       '%user' => $account->name,
       '%set_name' => $set->title,
     );
-    drupal_set_message($account->uid == $user->uid ? t('You are now using the %set_name shortcut set.', $replacements) : t('%user is now using the %set_name shortcut set.', $replacements));
+    drupal_set_message($account->uid === $user->uid ? t('You are now using the %set_name shortcut set.', $replacements) : t('%user is now using the %set_name shortcut set.', $replacements));
   }
 
   // Assign the shortcut set to the provided user account.
@@ -319,7 +319,7 @@ function shortcut_set_customize_submit($form, &$form_state) {
   foreach ($form_state['values']['shortcuts'] as $group => $links) {
     foreach ($links as $mlid => $data) {
       $link = menu_link_load($mlid);
-      $link['hidden'] = $data['status'] == 'enabled' ? 0 : 1;
+      $link['hidden'] = $data['status'] === 'enabled' ? 0 : 1;
       $link['weight'] = $data['weight'];
       menu_link_save($link);
     }
@@ -373,7 +373,7 @@ function theme_shortcut_set_customize($variables) {
       );
     }
 
-    if ($status == 'enabled') {
+    if ($status === 'enabled') {
       for ($i = 0; $i < shortcut_max_slots(); $i++) {
         $rows['empty-' . $i] = array(
           'data' => array(array(
diff --git a/core/modules/shortcut/shortcut.admin.js b/core/modules/shortcut/shortcut.admin.js
index 2647f34..7f10488 100644
--- a/core/modules/shortcut/shortcut.admin.js
+++ b/core/modules/shortcut/shortcut.admin.js
@@ -39,7 +39,7 @@ Drupal.behaviors.shortcutDrag = {
           }
         });
         var total = slots - count;
-        if (total == -1) {
+        if (total === -1) {
           var disabled = $(table).find('tr.shortcut-status-disabled');
           // To maintain the shortcut links limit, we need to move the last
           // element from the enabled section to the disabled section.
diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index aa43503..fa3897b 100644
--- a/core/modules/shortcut/shortcut.module
+++ b/core/modules/shortcut/shortcut.module
@@ -198,7 +198,7 @@ function shortcut_block_info() {
  * Implements hook_block_view().
  */
 function shortcut_block_view($delta = '') {
-  if ($delta == 'shortcuts') {
+  if ($delta === 'shortcuts') {
     $shortcut_set = shortcut_current_displayed_set();
     $data['subject'] = t('@shortcut_set shortcuts', array('@shortcut_set' => $shortcut_set->title));
     $data['content'] = shortcut_renderable_links($shortcut_set);
@@ -224,7 +224,7 @@ function shortcut_set_edit_access($shortcut_set = NULL) {
     return TRUE;
   }
   if (user_access('customize shortcut links')) {
-    return !isset($shortcut_set) || $shortcut_set == shortcut_current_displayed_set();
+    return !isset($shortcut_set) || $shortcut_set === shortcut_current_displayed_set();
   }
   return FALSE;
 }
@@ -246,7 +246,7 @@ function shortcut_set_delete_access($shortcut_set) {
   }
 
   // Never let the default shortcut set be deleted.
-  if ($shortcut_set->set_name == SHORTCUT_DEFAULT_SET_NAME) {
+  if ($shortcut_set->set_name === SHORTCUT_DEFAULT_SET_NAME) {
     return FALSE;
   }
 
@@ -278,7 +278,7 @@ function shortcut_set_switch_access($account = NULL) {
     return FALSE;
   }
 
-  if (!isset($account) || $user->uid == $account->uid) {
+  if (!isset($account) || $user->uid === $account->uid) {
     // Users with the 'switch shortcut sets' permission can switch their own
     // shortcuts sets.
     return TRUE;
@@ -390,7 +390,7 @@ function shortcut_set_save(&$shortcut_set) {
  */
 function shortcut_set_delete($shortcut_set) {
   // Don't allow deletion of the system default shortcut set.
-  if ($shortcut_set->set_name == SHORTCUT_DEFAULT_SET_NAME) {
+  if ($shortcut_set->set_name === SHORTCUT_DEFAULT_SET_NAME) {
     return FALSE;
   }
 
@@ -643,7 +643,7 @@ function shortcut_renderable_links($shortcut_set = NULL) {
  * Implements hook_preprocess_block().
  */
 function shortcut_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'shortcut') {
+  if ($variables['block']->module === 'shortcut') {
     $variables['attributes_array']['role'] = 'navigation';
   }
 }
@@ -672,14 +672,14 @@ function shortcut_preprocess_page(&$variables) {
 
     // Check if $link is already a shortcut and set $link_mode accordingly.
     foreach ($shortcut_set->links as $shortcut) {
-      if ($link == $shortcut['link_path']) {
+      if ($link === $shortcut['link_path']) {
         $mlid = $shortcut['mlid'];
         break;
       }
     }
     $link_mode = isset($mlid) ? "remove" : "add";
 
-    if ($link_mode == "add") {
+    if ($link_mode === "add") {
       $query['token'] = drupal_get_token('shortcut-add-link');
       $link_text = shortcut_set_switch_access() ? t('Add to %shortcut_set shortcuts', array('%shortcut_set' => $shortcut_set->title)) : t('Add to shortcuts');
       $link_path = 'admin/config/user-interface/shortcut/' . $shortcut_set->set_name . '/add-link-inline';
diff --git a/core/modules/shortcut/shortcut.test b/core/modules/shortcut/shortcut.test
index 550c10c..93f2746 100644
--- a/core/modules/shortcut/shortcut.test
+++ b/core/modules/shortcut/shortcut.test
@@ -267,7 +267,7 @@ class ShortcutSetsTestCase extends ShortcutTestCase {
     $this->drupalPost('user/' . $this->admin_user->uid . '/shortcuts', array('set' => $new_set->set_name), t('Change set'));
     $this->assertResponse(200);
     $current_set = shortcut_current_displayed_set($this->admin_user);
-    $this->assertTrue($new_set->set_name == $current_set->set_name, 'Successfully switched own shortcut set.');
+    $this->assertTrue($new_set->set_name === $current_set->set_name, 'Successfully switched own shortcut set.');
   }
 
   /**
@@ -278,7 +278,7 @@ class ShortcutSetsTestCase extends ShortcutTestCase {
 
     shortcut_set_assign_user($new_set, $this->shortcut_user);
     $current_set = shortcut_current_displayed_set($this->shortcut_user);
-    $this->assertTrue($new_set->set_name == $current_set->set_name, "Successfully switched another user's shortcut set.");
+    $this->assertTrue($new_set->set_name === $current_set->set_name, "Successfully switched another user's shortcut set.");
   }
 
   /**
@@ -318,7 +318,7 @@ class ShortcutSetsTestCase extends ShortcutTestCase {
     $saved_set = shortcut_set_load($set->set_name);
 
     $new_mlids = $this->getShortcutInformation($saved_set, 'mlid');
-    $this->assertTrue(count(array_intersect($old_mlids, $new_mlids)) == count($old_mlids), 'shortcut_set_save() did not inadvertently change existing mlids.');
+    $this->assertTrue(count(array_intersect($old_mlids, $new_mlids)) === count($old_mlids), 'shortcut_set_save() did not inadvertently change existing mlids.');
   }
 
   /**
@@ -330,7 +330,7 @@ class ShortcutSetsTestCase extends ShortcutTestCase {
     $new_title = $this->randomName(10);
     $this->drupalPost('admin/config/user-interface/shortcut/' . $set->set_name . '/edit', array('title' => $new_title), t('Save'));
     $set = shortcut_set_load($set->set_name);
-    $this->assertTrue($set->title == $new_title, 'Shortcut set has been successfully renamed.');
+    $this->assertTrue($set->title === $new_title, 'Shortcut set has been successfully renamed.');
   }
 
   /**
@@ -355,7 +355,7 @@ class ShortcutSetsTestCase extends ShortcutTestCase {
     shortcut_set_unassign_user($this->shortcut_user);
     $current_set = shortcut_current_displayed_set($this->shortcut_user);
     $default_set = shortcut_default_set($this->shortcut_user);
-    $this->assertTrue($current_set->set_name == $default_set->set_name, "Successfully unassigned another user's shortcut set.");
+    $this->assertTrue($current_set->set_name === $default_set->set_name, "Successfully unassigned another user's shortcut set.");
   }
 
   /**
diff --git a/core/modules/simpletest/drupal_web_test_case.php b/core/modules/simpletest/drupal_web_test_case.php
index 7163739..f92f973 100644
--- a/core/modules/simpletest/drupal_web_test_case.php
+++ b/core/modules/simpletest/drupal_web_test_case.php
@@ -167,7 +167,7 @@ abstract class DrupalTestCase {
 
     // We do not use a ternary operator here to allow a breakpoint on
     // test failure.
-    if ($status == 'pass') {
+    if ($status === 'pass') {
       return TRUE;
     }
     else {
@@ -249,7 +249,7 @@ abstract class DrupalTestCase {
     // or in an assertion function.
    while (($caller = $backtrace[1]) &&
          ((isset($caller['class']) && isset($this->skipClasses[$caller['class']])) ||
-           substr($caller['function'], 0, 6) == 'assert')) {
+           substr($caller['function'], 0, 6) === 'assert')) {
       // We remove that call.
       array_shift($backtrace);
     }
@@ -336,7 +336,7 @@ abstract class DrupalTestCase {
    *   TRUE if the assertion succeeded, FALSE otherwise.
    */
   protected function assertEqual($first, $second, $message = '', $group = 'Other') {
-    return $this->assert($first == $second, $message ? $message : t('Value @first is equal to value @second.', array('@first' => var_export($first, TRUE), '@second' => var_export($second, TRUE))), $group);
+    return $this->assert($first === $second, $message ? $message : t('Value @first is equal to value @second.', array('@first' => var_export($first, TRUE), '@second' => var_export($second, TRUE))), $group);
   }
 
   /**
@@ -434,7 +434,7 @@ abstract class DrupalTestCase {
    *   FALSE.
    */
   protected function error($message = '', $group = 'Other', array $caller = NULL) {
-    if ($group == 'User notice') {
+    if ($group === 'User notice') {
       // Since 'User notice' is set by trigger_error() which is used for debug
       // set the message to a status of 'debug'.
       return $this->assert('debug', $message, 'Debug', $caller);
@@ -507,7 +507,7 @@ abstract class DrupalTestCase {
     else {
       foreach ($class_methods as $method) {
         // If the current method starts with "test", run it - it's a test.
-        if (strtolower(substr($method, 0, 4)) == 'test') {
+        if (strtolower(substr($method, 0, 4)) === 'test') {
           // Insert a fail record. This will be deleted on completion to ensure
           // that testing completed.
           $method_info = new ReflectionMethod($class, $method);
@@ -642,7 +642,7 @@ abstract class DrupalTestCase {
    * );
    * $permutations = $this->permute($parameters);
    * // Result:
-   * $permutations == array(
+   * $permutations === array(
    *   array('one' => 0, 'two' => 2),
    *   array('one' => 1, 'two' => 2),
    *   array('one' => 0, 'two' => 3),
@@ -1168,7 +1168,7 @@ class DrupalWebTestCase extends DrupalTestCase {
     $this->assertTrue(isset($role->rid), t('Created role of name: @name, id: @rid', array('@name' => $name, '@rid' => (isset($role->rid) ? $role->rid : t('-n/a-')))), t('Role'));
     if ($role && !empty($role->rid)) {
       $count = db_query('SELECT COUNT(*) FROM {role_permission} WHERE rid = :rid', array(':rid' => $role->rid))->fetchField();
-      $this->assertTrue($count == count($permissions), t('Created permissions: @perms', array('@perms' => implode(', ', $permissions))), t('Role'));
+      $this->assertTrue((int) $count === count($permissions), t('Created permissions: @perms', array('@perms' => implode(', ', $permissions))), t('Role'));
       return $role->rid;
     }
     else {
@@ -1729,7 +1729,7 @@ class DrupalWebTestCase extends DrupalTestCase {
     // Header fields can be extended over multiple lines by preceding each
     // extra line with at least one SP or HT. They should be joined on receive.
     // Details are in RFC2616 section 4.
-    if ($header[0] == ' ' || $header[0] == "\t") {
+    if ($header[0] === ' ' || $header[0] === "\t") {
       // Normalize whitespace between chucks.
       $this->headers[] = array_pop($this->headers) . ' ' . trim($header);
     }
@@ -1751,7 +1751,7 @@ class DrupalWebTestCase extends DrupalTestCase {
       $parts = array_map('trim', explode(';', $matches[2]));
       $value = array_shift($parts);
       $this->cookies[$name] = array('value' => $value, 'secure' => in_array('secure', $parts));
-      if ($name == $this->session_name) {
+      if ($name === $this->session_name) {
         if ($value != 'deleted') {
           $this->session_id = $value;
         }
@@ -2275,7 +2275,7 @@ class DrupalWebTestCase extends DrupalTestCase {
             unset($edit[$name]);
             break;
           case 'radio':
-            if ($edit[$name] == $value) {
+            if ($edit[$name] === $value) {
               $post[$name] = $edit[$name];
               unset($edit[$name]);
             }
@@ -2320,8 +2320,9 @@ class DrupalWebTestCase extends DrupalTestCase {
             else {
               // Single select box.
               foreach ($options as $option) {
-                if ($new_value == $option['value']) {
-                  $post[$name] = $new_value;
+                $option_value = (string) $option['value'];
+                if ((string) $new_value === $option_value) {
+                  $post[$name] = $option_value;
                   unset($edit[$name]);
                   $done = TRUE;
                   break;
@@ -2364,7 +2365,7 @@ class DrupalWebTestCase extends DrupalTestCase {
             break;
           case 'submit':
           case 'image':
-            if (isset($submit) && $submit == $value) {
+            if (isset($submit) && $submit === $value) {
               $post[$name] = $value;
               $submit_matches = TRUE;
             }
@@ -2901,7 +2902,7 @@ class DrupalWebTestCase extends DrupalTestCase {
     if (!$message) {
       $message = !$not_exists ? t('"@text" found', array('@text' => $text)) : t('"@text" not found', array('@text' => $text));
     }
-    return $this->assert($not_exists == (strpos($this->plainTextContent, $text) === FALSE), $message, $group);
+    return $this->assert($not_exists === (strpos($this->plainTextContent, $text) === FALSE), $message, $group);
   }
 
   /**
@@ -2973,7 +2974,7 @@ class DrupalWebTestCase extends DrupalTestCase {
     }
     $offset = $first_occurance + strlen($text);
     $second_occurance = strpos($this->plainTextContent, $text, $offset);
-    return $this->assert($be_unique == ($second_occurance === FALSE), $message, $group);
+    return $this->assert($be_unique === ($second_occurance === FALSE), $message, $group);
   }
 
   /**
@@ -3077,6 +3078,7 @@ class DrupalWebTestCase extends DrupalTestCase {
    */
   protected function assertFieldByXPath($xpath, $value = NULL, $message = '', $group = 'Other') {
     $fields = $this->xpath($xpath);
+    $value = (string) $value;
 
     // If value specified then check array for match.
     $found = TRUE;
@@ -3084,24 +3086,24 @@ class DrupalWebTestCase extends DrupalTestCase {
       $found = FALSE;
       if ($fields) {
         foreach ($fields as $field) {
-          if (isset($field['value']) && $field['value'] == $value) {
+          if (isset($field['value']) && (string) $field['value'] === $value) {
             // Input element with correct value.
             $found = TRUE;
           }
           elseif (isset($field->option)) {
             // Select element found.
-            if ($this->getSelectedItem($field) == $value) {
+            if ($this->getSelectedItem($field) === $value) {
               $found = TRUE;
             }
             else {
               // No item selected so use first item.
               $items = $this->getAllOptions($field);
-              if (!empty($items) && $items[0]['value'] == $value) {
+              if (!empty($items) && (string) $items[0]['value'] === $value) {
                 $found = TRUE;
               }
             }
           }
-          elseif ((string) $field == $value) {
+          elseif ((string) $field === $value) {
             // Text area with correct text.
             $found = TRUE;
           }
@@ -3122,9 +3124,9 @@ class DrupalWebTestCase extends DrupalTestCase {
   protected function getSelectedItem(SimpleXMLElement $element) {
     foreach ($element->children() as $item) {
       if (isset($item['selected'])) {
-        return $item['value'];
+        return (string) $item['value'];
       }
-      elseif ($item->getName() == 'optgroup') {
+      elseif ($item->getName() === 'optgroup') {
         if ($value = $this->getSelectedItem($item)) {
           return $value;
         }
@@ -3157,7 +3159,7 @@ class DrupalWebTestCase extends DrupalTestCase {
       $found = FALSE;
       if ($fields) {
         foreach ($fields as $field) {
-          if ($field['value'] == $value) {
+          if ($field['value'] === $value) {
             $found = TRUE;
           }
         }
@@ -3442,7 +3444,7 @@ class DrupalWebTestCase extends DrupalTestCase {
    */
   protected function assertResponse($code, $message = '') {
     $curl_code = curl_getinfo($this->curlHandle, CURLINFO_HTTP_CODE);
-    $match = is_array($code) ? in_array($curl_code, $code) : $curl_code == $code;
+    $match = is_array($code) ? in_array($curl_code, $code) : $curl_code === $code;
     return $this->assertTrue($match, $message ? $message : t('HTTP response expected !code, actual !curl_code', array('!code' => $code, '!curl_code' => $curl_code)), t('Browser'));
   }
 
@@ -3460,7 +3462,7 @@ class DrupalWebTestCase extends DrupalTestCase {
    */
   protected function assertNoResponse($code, $message = '') {
     $curl_code = curl_getinfo($this->curlHandle, CURLINFO_HTTP_CODE);
-    $match = is_array($code) ? in_array($curl_code, $code) : $curl_code == $code;
+    $match = is_array($code) ? in_array($curl_code, $code) : $curl_code === $code;
     return $this->assertFalse($match, $message ? $message : t('HTTP response not expected !code, actual !curl_code', array('!code' => $code, '!curl_code' => $curl_code)), t('Browser'));
   }
 
@@ -3482,7 +3484,7 @@ class DrupalWebTestCase extends DrupalTestCase {
   protected function assertMail($name, $value = '', $message = '') {
     $captured_emails = variable_get('drupal_test_email_collector', array());
     $email = end($captured_emails);
-    return $this->assertTrue($email && isset($email[$name]) && $email[$name] == $value, $message, t('E-mail'));
+    return $this->assertTrue($email && isset($email[$name]) && $email[$name] === $value, $message, t('E-mail'));
   }
 
   /**
diff --git a/core/modules/simpletest/simpletest.js b/core/modules/simpletest/simpletest.js
index 9cab261..ecb4834 100644
--- a/core/modules/simpletest/simpletest.js
+++ b/core/modules/simpletest/simpletest.js
@@ -75,7 +75,7 @@ Drupal.behaviors.simpleTestSelectAll = {
             }
           });
         }
-        $(groupCheckbox).attr('checked', (checkedTests == testCheckboxes.length));
+        $(groupCheckbox).attr('checked', (checkedTests === testCheckboxes.length));
       };
 
       // Have the single-test checkboxes follow the group checkbox.
diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module
index cbc946c..77b526d 100644
--- a/core/modules/simpletest/simpletest.module
+++ b/core/modules/simpletest/simpletest.module
@@ -369,7 +369,7 @@ function simpletest_registry_files_alter(&$files, $modules) {
       $dir = $module->dir;
       if (!empty($module->info['files'])) {
         foreach ($module->info['files'] as $file) {
-          if (substr($file, -5) == '.test') {
+          if (substr($file, -5) === '.test') {
             $files["$dir/$file"] = array('module' => $module->name, 'weight' => $module->weight);
           }
         }
@@ -515,7 +515,7 @@ function simpletest_clean_results_table($test_id = NULL) {
  * @see MailTestCase::testCancelMessage()
  */
 function simpletest_mail_alter(&$message) {
-  if ($message['id'] == 'simpletest_cancel_test') {
+  if ($message['id'] === 'simpletest_cancel_test') {
     $message['send'] = FALSE;
   }
 }
diff --git a/core/modules/simpletest/simpletest.pages.inc b/core/modules/simpletest/simpletest.pages.inc
index 8ac1ee2..238b0a1 100644
--- a/core/modules/simpletest/simpletest.pages.inc
+++ b/core/modules/simpletest/simpletest.pages.inc
@@ -260,7 +260,7 @@ function simpletest_result_form($form, &$form_state, $test_id) {
       $row[] = simpletest_result_status_image($assertion->status);
 
       $class = 'simpletest-' . $assertion->status;
-      if ($assertion->message_group == 'Debug') {
+      if ($assertion->message_group === 'Debug') {
         $class = 'simpletest-debug';
       }
       $rows[] = array('data' => $row, 'class' => array($class));
@@ -275,7 +275,7 @@ function simpletest_result_form($form, &$form_state, $test_id) {
     );
 
     // Set summary information.
-    $group_summary['#ok'] = $group_summary['#fail'] + $group_summary['#exception'] == 0;
+    $group_summary['#ok'] = $group_summary['#fail'] + $group_summary['#exception'] === 0;
     $form['result']['results'][$group]['#collapsed'] = $group_summary['#ok'];
 
     // Store test group (class) as for use in filter.
@@ -283,7 +283,7 @@ function simpletest_result_form($form, &$form_state, $test_id) {
   }
 
   // Overal summary status.
-  $form['result']['summary']['#ok'] = $form['result']['summary']['#fail'] + $form['result']['summary']['#exception'] == 0;
+  $form['result']['summary']['#ok'] = $form['result']['summary']['#fail'] + $form['result']['summary']['#exception'] === 0;
 
   // Actions.
   $form['#action'] = url('admin/config/development/testing/results/re-run');
@@ -340,10 +340,10 @@ function simpletest_result_form_submit($form, &$form_state) {
   $pass = $form_state['values']['filter_pass'] ? explode(',', $form_state['values']['filter_pass']) : array();
   $fail = $form_state['values']['filter_fail'] ? explode(',', $form_state['values']['filter_fail']) : array();
 
-  if ($form_state['values']['filter'] == 'all') {
+  if ($form_state['values']['filter'] === 'all') {
     $classes = array_merge($pass, $fail);
   }
-  elseif ($form_state['values']['filter'] == 'pass') {
+  elseif ($form_state['values']['filter'] === 'pass') {
     $classes = $pass;
   }
   else {
diff --git a/core/modules/simpletest/simpletest.test b/core/modules/simpletest/simpletest.test
index 4cecbe6..35fb721 100644
--- a/core/modules/simpletest/simpletest.test
+++ b/core/modules/simpletest/simpletest.test
@@ -243,10 +243,10 @@ class SimpleTestFunctionalTest extends DrupalWebTestCase {
     $found = FALSE;
     foreach ($this->childTestResults['assertions'] as $assertion) {
       if ((strpos($assertion['message'], $message) !== FALSE) &&
-          $assertion['type'] == $type &&
-          $assertion['status'] == $status &&
-          $assertion['file'] == $file &&
-          $assertion['function'] == $function) {
+          $assertion['type'] === $type &&
+          $assertion['status'] === $status &&
+          $assertion['file'] === $file &&
+          $assertion['function'] === $function) {
         $found = TRUE;
         break;
       }
@@ -275,7 +275,7 @@ class SimpleTestFunctionalTest extends DrupalWebTestCase {
           $assertion['line'] = $this->asText($row->td[3]);
           $assertion['function'] = $this->asText($row->td[4]);
           $ok_url = file_create_url('core/misc/watchdog-ok.png');
-          $assertion['status'] = ($row->td[5]->img['src'] == $ok_url) ? 'Pass' : 'Fail';
+          $assertion['status'] = ($row->td[5]->img['src'] === $ok_url) ? 'Pass' : 'Fail';
           $results['assertions'][] = $assertion;
         }
       }
@@ -290,7 +290,7 @@ class SimpleTestFunctionalTest extends DrupalWebTestCase {
     $fieldsets = $this->xpath('//fieldset');
     $info = $this->getInfo();
     foreach ($fieldsets as $fieldset) {
-      if ($this->asText($fieldset->legend) == $info['name']) {
+      if ($this->asText($fieldset->legend) === $info['name']) {
         return $fieldset;
       }
     }
diff --git a/core/modules/statistics/statistics.module b/core/modules/statistics/statistics.module
index af1f833..8f5a1ee 100644
--- a/core/modules/statistics/statistics.module
+++ b/core/modules/statistics/statistics.module
@@ -59,7 +59,7 @@ function statistics_exit() {
 
   if (variable_get('statistics_count_content_views', 0)) {
     // We are counting content views.
-    if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == NULL) {
+    if (arg(0) === 'node' && is_numeric(arg(1)) && arg(2) === NULL) {
       // A node has been viewed, so update the node's counters.
       db_merge('node_counter')
         ->key(array('nid' => arg(1)))
@@ -432,7 +432,7 @@ function statistics_update_index() {
  * Implements hook_preprocess_block().
  */
 function statistics_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'statistics') {
+  if ($variables['block']->module === 'statistics') {
     $variables['attributes_array']['role'] = 'navigation';
   }
 }
diff --git a/core/modules/statistics/statistics.test b/core/modules/statistics/statistics.test
index 62cec24..f892f67 100644
--- a/core/modules/statistics/statistics.test
+++ b/core/modules/statistics/statistics.test
@@ -106,7 +106,7 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase {
     $this->drupalGet($path);
     $this->assertIdentical($this->drupalGetHeader('X-Drupal-Cache'), 'MISS', t('Testing an uncached page.'));
     $log = db_query('SELECT * FROM {accesslog}')->fetchAll(PDO::FETCH_ASSOC);
-    $this->assertTrue(is_array($log) && count($log) == 1, t('Page request was logged.'));
+    $this->assertTrue(is_array($log) && count($log) === 1, t('Page request was logged.'));
     $this->assertEqual(array_intersect_key($log[0], $expected), $expected);
     $node_counter = statistics_get($this->node->nid);
     $this->assertIdentical($node_counter['totalcount'], '1');
@@ -115,7 +115,7 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase {
     $this->drupalGet($path);
     $this->assertIdentical($this->drupalGetHeader('X-Drupal-Cache'), 'HIT', t('Testing a cached page.'));
     $log = db_query('SELECT * FROM {accesslog}')->fetchAll(PDO::FETCH_ASSOC);
-    $this->assertTrue(is_array($log) && count($log) == 2, t('Page request was logged.'));
+    $this->assertTrue(is_array($log) && count($log) === 2, t('Page request was logged.'));
     $this->assertEqual(array_intersect_key($log[1], $expected), $expected);
     $node_counter = statistics_get($this->node->nid);
     $this->assertIdentical($node_counter['totalcount'], '2');
@@ -125,7 +125,7 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase {
     $this->drupalGet($path);
     $log = db_query('SELECT * FROM {accesslog}')->fetchAll(PDO::FETCH_ASSOC);
     // Check the 6th item since login and account pages are also logged
-    $this->assertTrue(is_array($log) && count($log) == 6, t('Page request was logged.'));
+    $this->assertTrue(is_array($log) && count($log) === 6, t('Page request was logged.'));
     $this->assertEqual(array_intersect_key($log[5], $expected), $expected);
     $node_counter = statistics_get($this->node->nid);
     $this->assertIdentical($node_counter['totalcount'], '3');
@@ -138,7 +138,7 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase {
     );
     $this->drupalGet($path);
     $log = db_query('SELECT * FROM {accesslog}')->fetchAll(PDO::FETCH_ASSOC);
-    $this->assertTrue(is_array($log) && count($log) == 7, t('Page request was logged.'));
+    $this->assertTrue(is_array($log) && count($log) === 7, t('Page request was logged.'));
     $this->assertEqual(array_intersect_key($log[6], $expected), $expected);
 
     // Create a path longer than 255 characters.
@@ -147,7 +147,7 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase {
     // Test that the long path is properly truncated when logged.
     $this->drupalGet($long_path);
     $log = db_query('SELECT * FROM {accesslog}')->fetchAll(PDO::FETCH_ASSOC);
-    $this->assertTrue(is_array($log) && count($log) == 8, 'Page request was logged for a path over 255 characters.');
+    $this->assertTrue(is_array($log) && count($log) === 8, 'Page request was logged for a path over 255 characters.');
     $this->assertEqual($log[7]['path'], truncate_utf8($long_path, 255));
 
   }
diff --git a/core/modules/statistics/statistics.tokens.inc b/core/modules/statistics/statistics.tokens.inc
index c2c8fc3..18b04aa 100644
--- a/core/modules/statistics/statistics.tokens.inc
+++ b/core/modules/statistics/statistics.tokens.inc
@@ -35,19 +35,19 @@ function statistics_tokens($type, $tokens, array $data = array(), array $options
   $url_options = array('absolute' => TRUE);
   $replacements = array();
 
-  if ($type == 'node' & !empty($data['node'])) {
+  if ($type === 'node' & !empty($data['node'])) {
     $node = $data['node'];
 
     foreach ($tokens as $name => $original) {
-      if ($name == 'total-count') {
+      if ($name === 'total-count') {
         $statistics = statistics_get($node->nid);
         $replacements[$original] = $statistics['totalcount'];
       }
-      elseif ($name == 'day-count') {
+      elseif ($name === 'day-count') {
         $statistics = statistics_get($node->nid);
         $replacements[$original] = $statistics['daycount'];
       }
-      elseif ($name == 'last-view') {
+      elseif ($name === 'last-view') {
         $statistics = statistics_get($node->nid);
         $replacements[$original] = format_date($statistics['timestamp']);
       }
diff --git a/core/modules/syslog/syslog.test b/core/modules/syslog/syslog.test
index 1f7ab2e..f2c9aa3 100644
--- a/core/modules/syslog/syslog.test
+++ b/core/modules/syslog/syslog.test
@@ -37,7 +37,7 @@ class SyslogTestCase extends DrupalWebTestCase {
       $this->drupalGet('admin/config/development/logging');
       if ($this->parse()) {
         $field = $this->xpath('//option[@value=:value]', array(':value' => LOG_LOCAL6)); // Should be one field.
-        $this->assertTrue($field[0]['selected'] == 'selected', t('Facility value saved.'));
+        $this->assertTrue($field[0]['selected'] === 'selected', t('Facility value saved.'));
       }
     }
   }
diff --git a/core/modules/system/image.gd.inc b/core/modules/system/image.gd.inc
index 39f86dc..2e76b4b 100644
--- a/core/modules/system/image.gd.inc
+++ b/core/modules/system/image.gd.inc
@@ -138,14 +138,14 @@ function image_gd_rotate(stdClass $image, $degrees, $background = NULL) {
     $background = imagecolortransparent($image->resource);
 
     // If no transparent colors, use white.
-    if ($background == 0) {
+    if ($background === 0) {
       $background = imagecolorallocatealpha($image->resource, 255, 255, 255, 0);
     }
   }
 
   // Images are assigned a new color palette when rotating, removing any
   // transparency flags. For GIF images, keep a record of the transparent color.
-  if ($image->info['extension'] == 'gif') {
+  if ($image->info['extension'] === 'gif') {
     $transparent_index = imagecolortransparent($image->resource);
     if ($transparent_index != 0) {
       $transparent_gif_color = imagecolorsforindex($image->resource, $transparent_index);
@@ -268,12 +268,12 @@ function image_gd_save(stdClass $image, $destination) {
   if (!function_exists($function)) {
     return FALSE;
   }
-  if ($extension == 'jpeg') {
+  if ($extension === 'jpeg') {
     $success = $function($image->resource, $destination, variable_get('image_jpeg_quality', 75));
   }
   else {
     // Always save PNG images with full transparency.
-    if ($extension == 'png') {
+    if ($extension === 'png') {
       imagealphablending($image->resource, FALSE);
       imagesavealpha($image->resource, TRUE);
     }
@@ -301,7 +301,7 @@ function image_gd_save(stdClass $image, $destination) {
 function image_gd_create_tmp(stdClass $image, $width, $height) {
   $res = imagecreatetruecolor($width, $height);
 
-  if ($image->info['extension'] == 'gif') {
+  if ($image->info['extension'] === 'gif') {
     // Grab transparent color index from image resource.
     $transparent = imagecolortransparent($image->resource);
 
@@ -315,7 +315,7 @@ function image_gd_create_tmp(stdClass $image, $width, $height) {
       imagecolortransparent($res, $transparent);
     }
   }
-  elseif ($image->info['extension'] == 'png') {
+  elseif ($image->info['extension'] === 'png') {
     imagealphablending($res, FALSE);
     $transparency = imagecolorallocatealpha($res, 0, 0, 0, 127);
     imagefill($res, 0, 0, $transparency);
diff --git a/core/modules/system/language.api.php b/core/modules/system/language.api.php
index aa8fd2f..2038f19 100644
--- a/core/modules/system/language.api.php
+++ b/core/modules/system/language.api.php
@@ -54,7 +54,7 @@ function hook_language_init() {
 function hook_language_switch_links_alter(array &$links, $type, $path) {
   global $language_interface;
 
-  if ($type == LANGUAGE_TYPE_CONTENT && isset($links[$language_interface->langcode])) {
+  if ($type === LANGUAGE_TYPE_CONTENT && isset($links[$language_interface->langcode])) {
     foreach ($links[$language_interface->langcode] as $link) {
       $link['attributes']['class'][] = 'active-language';
     }
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index aac0c3d..d3238d5 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -121,7 +121,7 @@ function system_themes_page() {
       continue;
     }
     $admin_theme_options[$theme->name] = $theme->info['name'];
-    $theme->is_default = ($theme->name == $theme_default);
+    $theme->is_default = ($theme->name === $theme_default);
 
     // Identify theme screenshot.
     $theme->screenshot = NULL;
@@ -292,7 +292,7 @@ function system_theme_disable() {
 
     // Check if the specified theme is one recognized by the system.
     if (!empty($themes[$theme])) {
-      if ($theme == variable_get('theme_default', 'stark')) {
+      if ($theme === variable_get('theme_default', 'stark')) {
         // Don't disable the default theme.
         drupal_set_message(t('%theme is the default theme and cannot be disabled.', array('%theme' => $themes[$theme]->info['name'])), 'error');
       }
@@ -500,7 +500,7 @@ function system_theme_settings($form, &$form_state, $key = '') {
       // directory; stream wrappers are not end-user friendly.
       $original_path = $element['#default_value'];
       $friendly_path = NULL;
-      if (file_uri_scheme($original_path) == 'public') {
+      if (file_uri_scheme($original_path) === 'public') {
         $friendly_path = file_uri_target($original_path);
         $element['#default_value'] = $friendly_path;
       }
@@ -652,7 +652,7 @@ function system_theme_settings_validate($form, &$form_state) {
  */
 function _system_theme_settings_validate_path($path) {
   // Absolute local file paths are invalid.
-  if (drupal_realpath($path) == $path) {
+  if (drupal_realpath($path) === $path) {
     return FALSE;
   }
   // A path relative to the Drupal root or a fully qualified URI is valid.
@@ -877,7 +877,7 @@ function system_modules($form, $form_state = array()) {
     foreach ($module->required_by as $required_by => $v) {
       // Hidden modules are unset already.
       if (isset($visible_files[$required_by])) {
-        if ($files[$required_by]->status == 1 && $module->status == 1) {
+        if ($files[$required_by]->status === 1 && $module->status === 1) {
           $extra['required_by'][] = t('@module (<span class="admin-enabled">enabled</span>)', array('@module' => $files[$required_by]->info['name']));
           $extra['disabled'] = TRUE;
         }
@@ -904,7 +904,7 @@ function system_modules($form, $form_state = array()) {
         array('data' => t('Operations'), 'colspan' => 3),
       ),
       // Ensure that the "Core" package fieldset comes first.
-      '#weight' => $package == 'Core' ? -10 : NULL,
+      '#weight' => $package === 'Core' ? -10 : NULL,
     );
   }
 
@@ -1147,7 +1147,7 @@ function system_modules_submit($form, &$form_state) {
   // the dependent modules aren't installed either.
   foreach ($modules as $name => $module) {
     // Only invoke hook_requirements() on modules that are going to be installed.
-    if ($module['enabled'] && drupal_get_installed_schema_version($name) == SCHEMA_UNINSTALLED) {
+    if ($module['enabled'] && drupal_get_installed_schema_version($name) === SCHEMA_UNINSTALLED) {
       if (!drupal_check_module($name)) {
         $modules[$name]['enabled'] = FALSE;
         foreach (array_keys($files[$name]->required_by) as $required_by) {
@@ -1167,7 +1167,7 @@ function system_modules_submit($form, &$form_state) {
   // Builds arrays of modules that need to be enabled, disabled, and installed.
   foreach ($modules as $name => $module) {
     if ($module['enabled']) {
-      if (drupal_get_installed_schema_version($name) == SCHEMA_UNINSTALLED) {
+      if (drupal_get_installed_schema_version($name) === SCHEMA_UNINSTALLED) {
         $actions['install'][] = $name;
         $actions['enable'][] = $name;
       }
@@ -1410,10 +1410,10 @@ function system_ip_blocking_form_validate($form, &$form_state) {
   if (db_query("SELECT * FROM {blocked_ips} WHERE ip = :ip", array(':ip' => $ip))->fetchField()) {
     form_set_error('ip', t('This IP address is already blocked.'));
   }
-  elseif ($ip == ip_address()) {
+  elseif ($ip === ip_address()) {
     form_set_error('ip', t('You may not block your own IP address.'));
   }
-  elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE) == FALSE) {
+  elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE) === FALSE) {
     form_set_error('ip', t('Enter a valid IP address.'));
   }
 }
@@ -1501,7 +1501,7 @@ function system_site_information_settings() {
     '#default_value' => variable_get('default_nodes_main', 10),
     '#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30)),
     '#description' => t('The maximum number of posts displayed on overview pages such as the front page.'),
-    '#access' => (variable_get('site_frontpage') == 'node'),
+    '#access' => (variable_get('site_frontpage') === 'node'),
   );
   $form['error_page'] = array(
     '#type' => 'fieldset',
@@ -1831,7 +1831,7 @@ function system_image_toolkit_settings() {
   $toolkits_available = image_get_available_toolkits();
   $current_toolkit = image_get_toolkit();
 
-  if (count($toolkits_available) == 0) {
+  if (count($toolkits_available) === 0) {
     variable_del('image_toolkit');
     $form['image_toolkit_help'] = array(
       '#markup' => t("No image toolkits were detected. Drupal includes support for <a href='!gd-link'>PHP's built-in image processing functions</a> but they were not detected on this system. You should consult your system administrator to have them enabled, or try using a third party toolkit.", array('gd-link' => url('http://php.net/gd'))),
@@ -1999,7 +1999,7 @@ function system_date_time_settings() {
     foreach ($format_types as $type => $type_info) {
       // If a system type, only show the available formats for that type and
       // custom ones.
-      if ($type_info['locked'] == 1) {
+      if ($type_info['locked'] === 1) {
         $formats = system_get_date_formats($type);
         if (empty($formats)) {
           $formats = $all_formats;
@@ -2035,7 +2035,7 @@ function system_date_time_settings() {
 
       // If this isn't a system provided type, allow the user to remove it from
       // the system.
-      if ($type_info['locked'] == 0) {
+      if ($type_info['locked'] === 0) {
         $form['formats']['delete']['date_format_' . $type . '_delete'] = array(
           '#type' => 'link',
           '#title' => t('delete'),
@@ -2223,7 +2223,7 @@ function system_clean_url_settings($form, &$form_state) {
   else {
     $request = drupal_http_request($GLOBALS['base_url'] . '/admin/config/search/clean-urls/check');
     // If the request returns HTTP 200, clean URLs are available.
-    if (isset($request->code) && $request->code == 200) {
+    if (isset($request->code) && $request->code === 200) {
       $available = TRUE;
       // If the user started the clean URL test, provide explicit feedback.
       if (isset($form_state['input']['clean_url_test_execute'])) {
@@ -2311,7 +2311,7 @@ function system_status($check = FALSE) {
   usort($requirements, '_system_sort_requirements');
 
   if ($check) {
-    return drupal_requirements_severity($requirements) == REQUIREMENT_ERROR;
+    return drupal_requirements_severity($requirements) === REQUIREMENT_ERROR;
   }
   // MySQL import might have set the uid of the anonymous user to autoincrement
   // value. Let's try fixing it. See http://drupal.org/node/204411
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index 17df444..e3ad4a6 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -388,7 +388,7 @@ function hook_library_info() {
  */
 function hook_library_info_alter(&$libraries, $module) {
   // Update Farbtastic to version 2.0.
-  if ($module == 'system' && isset($libraries['farbtastic'])) {
+  if ($module === 'system' && isset($libraries['farbtastic'])) {
     // Verify existing version is older than the one we are updating to.
     if (version_compare($libraries['farbtastic']['version'], '2.0', '<')) {
       // Update the existing Farbtastic to version 2.0.
@@ -486,7 +486,7 @@ function hook_page_build(&$page) {
  */
 function hook_menu_get_item_alter(&$router_item, $path, $original_map) {
   // When retrieving the router item for the current path...
-  if ($path == $_GET['q']) {
+  if ($path === $_GET['q']) {
     // ...call a function that prepares something for this request.
     mymodule_prepare_something();
   }
@@ -844,13 +844,13 @@ function hook_menu_link_alter(&$item) {
     $item['hidden'] = 1;
   }
   // Flag a link to be altered by hook_translated_menu_link_alter().
-  if ($item['link_path'] == 'devel/cache/clear') {
+  if ($item['link_path'] === 'devel/cache/clear') {
     $item['options']['alter'] = TRUE;
   }
   // Flag a link to be altered by hook_translated_menu_link_alter(), but only
   // if it is derived from a menu router item; i.e., do not alter a custom
   // menu link pointing to the same path that has been created by a user.
-  if ($item['link_path'] == 'user' && $item['module'] == 'system') {
+  if ($item['link_path'] === 'user' && $item['module'] === 'system') {
     $item['options']['alter'] = TRUE;
   }
 }
@@ -880,7 +880,7 @@ function hook_menu_link_alter(&$item) {
  * @see hook_menu_link_alter()
  */
 function hook_translated_menu_link_alter(&$item, $map) {
-  if ($item['href'] == 'devel/cache/clear') {
+  if ($item['href'] === 'devel/cache/clear') {
     $item['localized_options']['query'] = drupal_get_destination();
   }
 }
@@ -1014,7 +1014,7 @@ function hook_menu_local_tasks_alter(&$data, $router_item, $root_path) {
     // Define whether this link is active. This can be omitted for
     // implementations that add links to pages outside of the current page
     // context.
-    '#active' => ($router_item['path'] == $root_path),
+    '#active' => ($router_item['path'] === $root_path),
   );
 }
 
@@ -1059,7 +1059,7 @@ function hook_menu_breadcrumb_alter(&$active_trail, $item) {
   // it will appear.
   if (!drupal_is_front_page()) {
     $end = end($active_trail);
-    if ($item['href'] == $end['href']) {
+    if ($item['href'] === $end['href']) {
       $active_trail[] = $end;
     }
   }
@@ -1096,7 +1096,7 @@ function hook_menu_breadcrumb_alter(&$active_trail, $item) {
  */
 function hook_menu_contextual_links_alter(&$links, $router_item, $root_path) {
   // Add a link to all contextual links for nodes.
-  if ($root_path == 'node/%') {
+  if ($root_path === 'node/%') {
     $links['foo'] = array(
       'title' => t('Do fu'),
       'href' => 'foo/do',
@@ -1204,7 +1204,7 @@ function hook_page_alter(&$page) {
  * @see hook_form_FORM_ID_alter()
  */
 function hook_form_alter(&$form, &$form_state, $form_id) {
-  if (isset($form['type']) && $form['type']['#value'] . '_node_settings' == $form_id) {
+  if (isset($form['type']) && $form['type']['#value'] . '_node_settings' === $form_id) {
     $form['workflow']['upload_' . $form['type']['#value']] = array(
       '#type' => 'radios',
       '#title' => t('Attachments'),
@@ -1504,7 +1504,7 @@ function hook_image_toolkits() {
  * @see drupal_mail()
  */
 function hook_mail_alter(&$message) {
-  if ($message['id'] == 'modulename_messagekey') {
+  if ($message['id'] === 'modulename_messagekey') {
     if (!example_notifications_optin($message['to'], $message['id'])) {
       // If the recipient has opted to not receive such messages, cancel
       // sending.
@@ -1539,7 +1539,7 @@ function hook_mail_alter(&$message) {
  *   The name of the module hook being implemented.
  */
 function hook_module_implements_alter(&$implementations, $hook) {
-  if ($hook == 'rdf_mapping') {
+  if ($hook === 'rdf_mapping') {
     // Move my_module_rdf_mapping() to the end of the list. module_implements()
     // iterates through $implementations with a foreach loop which PHP iterates
     // in the order that the items were added, so to move an item to the end of
@@ -1807,7 +1807,7 @@ function hook_theme($existing, $type, $theme, $path) {
 function hook_theme_registry_alter(&$theme_registry) {
   // Kill the next/previous forum topic navigation links.
   foreach ($theme_registry['forum_topic_navigation']['preprocess functions'] as $key => $value) {
-    if ($value == 'template_preprocess_forum_topic_navigation') {
+    if ($value === 'template_preprocess_forum_topic_navigation') {
       unset($theme_registry['forum_topic_navigation']['preprocess functions'][$key]);
     }
   }
@@ -1916,7 +1916,7 @@ function hook_xmlrpc_alter(&$methods) {
       continue;
     }
     // Perform the wanted manipulation.
-    if ($method[0] == 'drupal.site.ping') {
+    if ($method[0] === 'drupal.site.ping') {
       $method[1] = 'mymodule_directory_ping';
     }
   }
@@ -2035,7 +2035,7 @@ function hook_mail($key, &$message, $params) {
     '%site_name' => variable_get('site_name', 'Drupal'),
     '%username' => user_format_name($account),
   );
-  if ($context['hook'] == 'taxonomy') {
+  if ($context['hook'] === 'taxonomy') {
     $entity = $params['entity'];
     $vocabulary = taxonomy_vocabulary_load($entity->vid);
     $variables += array(
@@ -2492,7 +2492,7 @@ function hook_file_url_alter(&$uri) {
   global $user;
 
   // User 1 will always see the local file in this example.
-  if ($user->uid == 1) {
+  if ($user->uid === 1) {
     return;
   }
 
@@ -2537,9 +2537,9 @@ function hook_file_url_alter(&$uri) {
  * Check installation requirements and do status reporting.
  *
  * This hook has three closely related uses, determined by the $phase argument:
- * - Checking installation requirements ($phase == 'install').
- * - Checking update requirements ($phase == 'update').
- * - Status reporting ($phase == 'runtime').
+ * - Checking installation requirements ($phase === 'install').
+ * - Checking update requirements ($phase === 'update').
+ * - Status reporting ($phase === 'runtime').
  *
  * Note that this hook, like all others dealing with installation and updates,
  * must reside in a module_name.install file, or it will not properly abort
@@ -2594,7 +2594,7 @@ function hook_requirements($phase) {
   $t = get_t();
 
   // Report Drupal version
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     $requirements['drupal'] = array(
       'title' => $t('Drupal'),
       'value' => VERSION,
@@ -2605,7 +2605,7 @@ function hook_requirements($phase) {
   // Test PHP version
   $requirements['php'] = array(
     'title' => $t('PHP'),
-    'value' => ($phase == 'runtime') ? l(phpversion(), 'admin/reports/status/php') : phpversion(),
+    'value' => ($phase === 'runtime') ? l(phpversion(), 'admin/reports/status/php') : phpversion(),
   );
   if (version_compare(phpversion(), DRUPAL_MINIMUM_PHP) < 0) {
     $requirements['php']['description'] = $t('Your PHP installation is too old. Drupal requires at least PHP %version.', array('%version' => DRUPAL_MINIMUM_PHP));
@@ -2613,7 +2613,7 @@ function hook_requirements($phase) {
   }
 
   // Report cron status
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     $cron_last = variable_get('cron_last');
 
     if (is_numeric($cron_last)) {
@@ -3136,7 +3136,7 @@ function hook_registry_files_alter(&$files, $modules) {
     if (!$module->status) {
       $dir = $module->dir;
       foreach ($module->info['files'] as $file) {
-        if (substr($file, -5) == '.test') {
+        if (substr($file, -5) === '.test') {
           $files["$dir/$file"] = array('module' => $module->name, 'weight' => $module->weight);
         }
       }
@@ -3339,7 +3339,7 @@ function hook_drupal_goto_alter(&$path, &$options, &$http_response_code) {
  */
 function hook_html_head_alter(&$head_elements) {
   foreach ($head_elements as $key => $element) {
-    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
+    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] === 'canonical') {
       // I want a custom canonical url.
       $head_elements[$key]['#attributes']['href'] = mymodule_canonical_url();
     }
@@ -3693,7 +3693,7 @@ function hook_page_delivery_callback_alter(&$callback) {
   // jQuery sets a HTTP_X_REQUESTED_WITH header of 'XMLHttpRequest'.
   // If a page would normally be delivered as an html page, and it is called
   // from jQuery, deliver it instead as an Ajax response.
-  if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && $callback == 'drupal_deliver_html_page') {
+  if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest' && $callback === 'drupal_deliver_html_page') {
     $callback = 'ajax_deliver';
   }
 }
@@ -3761,7 +3761,7 @@ function hook_url_inbound_alter(&$path, $original_path, $path_language) {
  */
 function hook_url_outbound_alter(&$path, &$options, $original_path) {
   // Use an external RSS feed rather than the Drupal one.
-  if ($path == 'rss.xml') {
+  if ($path === 'rss.xml') {
     $path = 'http://example.com/rss.xml';
     $options['external'] = TRUE;
   }
@@ -3769,7 +3769,7 @@ function hook_url_outbound_alter(&$path, &$options, $original_path) {
   // Instead of pointing to user/[uid]/edit, point to user/me/edit.
   if (preg_match('|^user/([0-9]*)/edit(/.*)?|', $path, $matches)) {
     global $user;
-    if ($user->uid == $matches[1]) {
+    if ($user->uid === $matches[1]) {
       $path = 'user/me/edit' . $matches[2];
     }
   }
@@ -3822,7 +3822,7 @@ function hook_tokens($type, $tokens, array $data = array(), array $options = arr
 
   $replacements = array();
 
-  if ($type == 'node' && !empty($data['node'])) {
+  if ($type === 'node' && !empty($data['node'])) {
     $node = $data['node'];
 
     foreach ($tokens as $name => $original) {
@@ -3842,7 +3842,7 @@ function hook_tokens($type, $tokens, array $data = array(), array $options = arr
 
         // Default values for the chained tokens handled below.
         case 'author':
-          $name = ($node->uid == 0) ? variable_get('anonymous', t('Anonymous')) : $node->name;
+          $name = ($node->uid === 0) ? variable_get('anonymous', t('Anonymous')) : $node->name;
           $replacements[$original] = $sanitize ? filter_xss($name) : $name;
           break;
 
@@ -3893,7 +3893,7 @@ function hook_tokens_alter(array &$replacements, array $context) {
   }
   $sanitize = !empty($options['sanitize']);
 
-  if ($context['type'] == 'node' && !empty($context['data']['node'])) {
+  if ($context['type'] === 'node' && !empty($context['data']['node'])) {
     $node = $context['data']['node'];
 
     // Alter the [node:title] token, and replace it with the rendered content
@@ -4033,7 +4033,7 @@ function hook_token_info_alter(&$data) {
 function hook_batch_alter(&$batch) {
   // If the current page request is inside the overlay, add ?render=overlay to
   // the success callback URL, so that it appears correctly within the overlay.
-  if (overlay_get_mode() == 'child') {
+  if (overlay_get_mode() === 'child') {
     if (isset($batch['url_options']['query'])) {
       $batch['url_options']['query']['render'] = 'overlay';
     }
@@ -4136,7 +4136,7 @@ function hook_countries_alter(&$countries) {
  */
 function hook_menu_site_status_alter(&$menu_site_status, $path) {
   // Allow access to my_module/authentication even if site is in offline mode.
-  if ($menu_site_status == MENU_SITE_OFFLINE && user_is_anonymous() && $path == 'my_module/authentication') {
+  if ($menu_site_status === MENU_SITE_OFFLINE && user_is_anonymous() && $path === 'my_module/authentication') {
     $menu_site_status = MENU_SITE_ONLINE;
   }
 }
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index e3517d7..0e9a25c 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -22,7 +22,7 @@ function system_requirements($phase) {
   $t = get_t();
 
   // Report Drupal version
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     $requirements['drupal'] = array(
       'title' => $t('Drupal'),
       'value' => VERSION,
@@ -60,7 +60,7 @@ function system_requirements($phase) {
   if (function_exists('phpinfo')) {
     $requirements['php'] = array(
       'title' => $t('PHP'),
-      'value' => ($phase == 'runtime') ? $phpversion .' ('. l($t('more information'), 'admin/reports/status/php') .')' : $phpversion,
+      'value' => ($phase === 'runtime') ? $phpversion .' ('. l($t('more information'), 'admin/reports/status/php') .')' : $phpversion,
     );
   }
   else {
@@ -139,7 +139,7 @@ function system_requirements($phase) {
     $requirements['php_extensions']['value'] = $t('Enabled');
   }
 
-  if ($phase == 'install' || $phase == 'update') {
+  if ($phase === 'install' || $phase === 'update') {
     // Test for PDO (database).
     $requirements['database_extensions'] = array(
       'title' => $t('Database support'),
@@ -198,18 +198,18 @@ function system_requirements($phase) {
   $memory_limit = ini_get('memory_limit');
   $requirements['php_memory_limit'] = array(
     'title' => $t('PHP memory limit'),
-    'value' => $memory_limit == -1 ? t('-1 (Unlimited)') : $memory_limit,
+    'value' => $memory_limit === -1 ? t('-1 (Unlimited)') : $memory_limit,
   );
 
   if ($memory_limit && $memory_limit != -1 && parse_size($memory_limit) < parse_size(DRUPAL_MINIMUM_PHP_MEMORY_LIMIT)) {
     $description = '';
-    if ($phase == 'install') {
+    if ($phase === 'install') {
       $description = $t('Consider increasing your PHP memory limit to %memory_minimum_limit to help prevent errors in the installation process.', array('%memory_minimum_limit' => DRUPAL_MINIMUM_PHP_MEMORY_LIMIT));
     }
-    elseif ($phase == 'update') {
+    elseif ($phase === 'update') {
       $description = $t('Consider increasing your PHP memory limit to %memory_minimum_limit to help prevent errors in the update process.', array('%memory_minimum_limit' => DRUPAL_MINIMUM_PHP_MEMORY_LIMIT));
     }
-    elseif ($phase == 'runtime') {
+    elseif ($phase === 'runtime') {
       $description = $t('Depending on your configuration, Drupal can run with a %memory_limit PHP memory limit. However, a %memory_minimum_limit PHP memory limit or above is recommended, especially if your site uses additional custom or contributed modules.', array('%memory_limit' => $memory_limit, '%memory_minimum_limit' => DRUPAL_MINIMUM_PHP_MEMORY_LIMIT));
     }
 
@@ -227,7 +227,7 @@ function system_requirements($phase) {
   }
 
   // Test settings.php file writability
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     $conf_dir = drupal_verify_install_file(conf_path(), FILE_NOT_WRITABLE, 'dir');
     $conf_file = drupal_verify_install_file(conf_path() . '/settings.php', FILE_EXIST|FILE_READABLE|FILE_NOT_WRITABLE);
     if (!$conf_dir || !$conf_file) {
@@ -252,7 +252,7 @@ function system_requirements($phase) {
   }
 
   // Report cron status.
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     // Cron warning threshold defaults to two days.
     $threshold_warning = variable_get('cron_threshold_warning', 172800);
     // Cron error threshold defaults to two weeks.
@@ -309,7 +309,7 @@ function system_requirements($phase) {
   // Do not check for the temporary files directory at install time
   // unless it has been set in settings.php. In this case the user has
   // no alternative but to fix the directory if it is not writable.
-  if ($phase == 'install') {
+  if ($phase === 'install') {
     $directories[] = variable_get('file_temporary_path', FALSE);
   }
   else {
@@ -326,7 +326,7 @@ function system_requirements($phase) {
     if (!$directory) {
       continue;
     }
-    if ($phase == 'install') {
+    if ($phase === 'install') {
       file_prepare_directory($directory, FILE_CREATE_DIRECTORY);
     }
     $is_writable = is_writable($directory);
@@ -341,10 +341,10 @@ function system_requirements($phase) {
         $error .= $t('The directory %directory is not writable.', array('%directory' => $directory)) . ' ';
       }
       // The files directory requirement check is done only during install and runtime.
-      if ($phase == 'runtime') {
+      if ($phase === 'runtime') {
         $description = $error . $t('You may need to set the correct directory at the <a href="@admin-file-system">file system settings page</a> or change the current directory\'s permissions so that it is writable.', array('@admin-file-system' => url('admin/config/media/file-system')));
       }
-      elseif ($phase == 'install') {
+      elseif ($phase === 'install') {
         // For the installer UI, we need different wording. 'value' will
         // be treated as version, so provide none there.
         $description = $error . $t('An automated attempt to create this directory failed, possibly due to a permissions problem. To proceed with the installation, either create the directory and modify its permissions manually or ensure that the installer has the permissions to create it automatically. For more information, see INSTALL.txt or the <a href="@handbook_url">online handbook</a>.', array('@handbook_url' => 'http://drupal.org/server-permissions'));
@@ -356,7 +356,7 @@ function system_requirements($phase) {
       }
     }
     else {
-      if (file_default_scheme() == 'public') {
+      if (file_default_scheme() === 'public') {
         $requirements['file system']['value'] = $t('Writable (<em>public</em> download method)');
       }
       else {
@@ -366,7 +366,7 @@ function system_requirements($phase) {
   }
 
   // See if updates are available in update.php.
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     $requirements['update'] = array(
       'title' => $t('Database updates'),
       'severity' => REQUIREMENT_OK,
@@ -389,7 +389,7 @@ function system_requirements($phase) {
   }
 
   // Verify the update.php access setting
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     if (!empty($GLOBALS['update_free_access'])) {
       $requirements['update access'] = array(
         'value' => $t('Not protected'),
@@ -406,12 +406,12 @@ function system_requirements($phase) {
   }
 
   // Display an error if a newly introduced dependency in a module is not resolved.
-  if ($phase == 'update') {
+  if ($phase === 'update') {
     $profile = drupal_get_profile();
     $files = system_rebuild_module_data();
     foreach ($files as $module => $file) {
       // Ignore disabled modules and install profiles.
-      if (!$file->status || $module == $profile) {
+      if (!$file->status || $module === $profile) {
         continue;
       }
       // Check the module's PHP version.
@@ -457,7 +457,7 @@ function system_requirements($phase) {
   include_once DRUPAL_ROOT . '/core/includes/unicode.inc';
   $requirements = array_merge($requirements, unicode_requirements());
 
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     // Check for update status module.
     if (!module_exists('update')) {
       $requirements['update status'] = array(
@@ -1261,7 +1261,7 @@ function system_schema() {
         'default' => 0,
       ),
       'depth' => array(
-        'description' => 'The depth relative to the top level. A link with plid == 0 will have depth == 1.',
+        'description' => 'The depth relative to the top level. A link with plid === 0 will have depth === 1.',
         'type' => 'int',
         'not null' => TRUE,
         'default' => 0,
@@ -1697,7 +1697,7 @@ function system_update_8000() {
 function system_update_8001() {
   $themes = array('theme_default', 'maintenance_theme', 'admin_theme');
   foreach ($themes as $theme) {
-    if (variable_get($theme) == 'garland') {
+    if (variable_get($theme) === 'garland') {
       variable_set($theme, 'bartik');
     }
   }
diff --git a/core/modules/system/system.js b/core/modules/system/system.js
index b577140..fc874bb 100644
--- a/core/modules/system/system.js
+++ b/core/modules/system/system.js
@@ -82,7 +82,7 @@ Drupal.behaviors.copyFieldValue = {
         // Add the behavior to update target fields on blur of the primary field.
         for (var delta in targetIds) {
           var targetField = $('#' + targetIds[delta]);
-          if (targetField.val() == '') {
+          if (targetField.val() === '') {
             targetField.val(this.value);
           }
         }
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index a3594b9..c753e61 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -121,13 +121,13 @@ function system_help($path, $arg) {
     case 'admin/modules/uninstall':
       return '<p>' . t('The uninstall process removes all data related to a module. To uninstall a module, you must first disable it on the main <a href="@modules">Modules page</a>.', array('@modules' => url('admin/modules'))) . '</p>';
     case 'admin/structure/block/manage':
-      if ($arg[4] == 'system' && $arg[5] == 'powered-by') {
+      if ($arg[4] === 'system' && $arg[5] === 'powered-by') {
         return '<p>' . t('The <em>Powered by Drupal</em> block is an optional link to the home page of the Drupal project. While there is absolutely no requirement that sites feature this link, it may be used to show support for Drupal.') . '</p>';
       }
       break;
     case 'admin/config/development/maintenance':
       global $user;
-      if ($user->uid == 1) {
+      if ($user->uid === 1) {
         return '<p>' . t('Use maintenance mode when making major updates, particularly if the updates could disrupt visitors or the update process. Examples include upgrading, importing or exporting content, modifying a theme, modifying content types, and making backups.') . '</p>';
       }
       break;
@@ -2002,7 +2002,7 @@ function system_form_user_profile_form_alter(&$form, &$form_state) {
  * Implements hook_form_FORM_ID_alter().
  */
 function system_form_user_register_form_alter(&$form, &$form_state) {
-  if (variable_get('configurable_timezones', 1) && variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT) == DRUPAL_USER_TIMEZONE_SELECT) {
+  if (variable_get('configurable_timezones', 1) && variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT) === DRUPAL_USER_TIMEZONE_SELECT) {
     system_user_timezone($form, $form_state);
     return $form;
   }
@@ -2044,11 +2044,11 @@ function system_user_timezone(&$form, &$form_state) {
   $form['timezone']['timezone'] = array(
     '#type' => 'select',
     '#title' => t('Time zone'),
-    '#default_value' => isset($account->timezone) ? $account->timezone : ($account->uid == $user->uid ? variable_get('date_default_timezone', '') : ''),
+    '#default_value' => isset($account->timezone) ? $account->timezone : ($account->uid === $user->uid ? variable_get('date_default_timezone', '') : ''),
     '#options' => system_time_zones($account->uid != $user->uid),
     '#description' => t('Select the desired local time and time zone. Dates and times throughout this site will be displayed using this time zone.'),
   );
-  if (!isset($account->timezone) && $account->uid == $user->uid && empty($form_state['input']['timezone'])) {
+  if (!isset($account->timezone) && $account->uid === $user->uid && empty($form_state['input']['timezone'])) {
     $form['timezone']['#description'] = t('Your time zone setting will be automatically detected if possible. Confirm the selection and click save.');
     $form['timezone']['timezone']['#attributes'] = array('class' => array('timezone-detect'));
     drupal_add_js('core/misc/timezone.js');
@@ -2128,7 +2128,7 @@ function system_block_view($delta = '') {
  * Implements hook_preprocess_block().
  */
 function system_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'system') {
+  if ($variables['block']->module === 'system') {
 
     switch ($variables['block']->delta) {
       case 'powered-by':
@@ -2214,7 +2214,7 @@ function system_admin_menu_block($item) {
  */
 function system_check_directory($form_element) {
   $directory = $form_element['#value'];
-  if (strlen($directory) == 0) {
+  if (strlen($directory) === 0) {
     return $form_element;
   }
 
@@ -2230,7 +2230,7 @@ function system_check_directory($form_element) {
     watchdog('file system', 'The directory %directory exists but is not writable and could not be made writable.', array('%directory' => $directory), WATCHDOG_ERROR);
   }
   elseif (is_dir($directory)) {
-    if ($form_element['#name'] == 'file_public_path') {
+    if ($form_element['#name'] === 'file_public_path') {
       // Create public .htaccess file.
       file_save_htaccess($directory, FALSE);
     }
@@ -2377,7 +2377,7 @@ function system_update_files_database(&$files, $type) {
  */
 function system_get_info($type, $name = NULL) {
   $info = array();
-  if ($type == 'module') {
+  if ($type === 'module') {
     $type = 'module_enabled';
   }
   $list = system_list($type);
@@ -2451,7 +2451,7 @@ function _system_rebuild_module_data() {
 
     // Install profiles are hidden by default, unless explicitly specified
     // otherwise in the .info file.
-    if ($key == $profile && !isset($modules[$key]->info['hidden'])) {
+    if ($key === $profile && !isset($modules[$key]->info['hidden'])) {
       $modules[$key]->info['hidden'] = TRUE;
     }
 
@@ -2583,7 +2583,7 @@ function _system_rebuild_theme_data() {
     if (!empty($themes[$key]->info['base theme'])) {
       $sub_themes[] = $key;
     }
-    if ($themes[$key]->info['engine'] == 'theme') {
+    if ($themes[$key]->info['engine'] === 'theme') {
       $filename = dirname($themes[$key]->uri) . '/' . $themes[$key]->name . '.theme';
       if (file_exists($filename)) {
         $themes[$key]->owner = $filename;
@@ -2726,7 +2726,7 @@ function system_region_list($theme_key, $show = REGIONS_ALL) {
   $info = $themes[$theme_key]->info;
   // If requested, suppress hidden regions. See block_admin_display_form().
   foreach ($info['regions'] as $name => $label) {
-    if ($show == REGIONS_ALL || !isset($info['regions_hidden']) || !in_array($name, $info['regions_hidden'])) {
+    if ($show === REGIONS_ALL || !isset($info['regions_hidden']) || !in_array($name, $info['regions_hidden'])) {
       $list[$name] = t($label);
     }
   }
@@ -2740,7 +2740,7 @@ function system_region_list($theme_key, $show = REGIONS_ALL) {
 function system_system_info_alter(&$info, $file, $type) {
   // Remove page-top and page-bottom from the blocks UI since they are reserved for
   // modules to populate from outside the blocks system.
-  if ($type == 'theme') {
+  if ($type === 'theme') {
     $info['regions_hidden'][] = 'page_top';
     $info['regions_hidden'][] = 'page_bottom';
   }
@@ -2931,7 +2931,7 @@ function system_admin_compact_mode() {
  *   Valid values are 'on' and 'off'.
  */
 function system_admin_compact_page($mode = 'off') {
-  user_cookie_save(array('admin_compact_mode' => ($mode == 'on')));
+  user_cookie_save(array('admin_compact_mode' => ($mode === 'on')));
   drupal_goto();
 }
 
@@ -3515,7 +3515,7 @@ function system_run_automated_cron() {
   // If the site is not fully installed, suppress the automated cron run.
   // Otherwise it could be triggered prematurely by Ajax requests during
   // installation.
-  if (($threshold = variable_get('cron_safe_threshold', DRUPAL_CRON_DEFAULT_THRESHOLD)) > 0 && variable_get('install_task') == 'done') {
+  if (($threshold = variable_get('cron_safe_threshold', DRUPAL_CRON_DEFAULT_THRESHOLD)) > 0 && variable_get('install_task') === 'done') {
     $cron_last = variable_get('cron_last', NULL);
     if (!isset($cron_last) || (REQUEST_TIME - $cron_last > $threshold)) {
       drupal_cron_run();
diff --git a/core/modules/system/system.test b/core/modules/system/system.test
index 78f6a23..92c88ae 100644
--- a/core/modules/system/system.test
+++ b/core/modules/system/system.test
@@ -321,7 +321,7 @@ class EnableDisableTestCase extends ModuleTestCase {
       $final_count = count($automatically_enabled);
       // If all checkboxes were disabled, something is really wrong with the
       // test. Throw a failure and avoid an infinite loop.
-      if ($initial_count == $final_count) {
+      if ($initial_count === $final_count) {
         $this->fail(t('Remaining modules could not be disabled.'));
         break;
       }
@@ -471,7 +471,7 @@ class ModuleDependencyTestCase extends ModuleTestCase {
     $this->drupalGet('admin/modules');
     $this->assertRaw(t('@module (<span class="admin-missing">missing</span>)', array('@module' => drupal_ucfirst('_missing_dependency'))), t('A module with missing dependencies is marked as such.'));
     $checkbox = $this->xpath('//input[@type="checkbox" and @disabled="disabled" and @name="modules[Testing][system_dependencies_test][enable]"]');
-    $this->assert(count($checkbox) == 1, t('Checkbox for the module is disabled.'));
+    $this->assert(count($checkbox) === 1, t('Checkbox for the module is disabled.'));
 
     // Force enable the system_dependencies_test module.
     module_enable(array('system_dependencies_test'), FALSE);
@@ -500,7 +500,7 @@ class ModuleDependencyTestCase extends ModuleTestCase {
       '@version' => '1.0',
     )), 'A module that depends on an incompatible version of a module is marked as such.');
     $checkbox = $this->xpath('//input[@type="checkbox" and @disabled="disabled" and @name="modules[Testing][system_incompatible_module_version_dependencies_test][enable]"]');
-    $this->assert(count($checkbox) == 1, t('Checkbox for the module is disabled.'));
+    $this->assert(count($checkbox) === 1, t('Checkbox for the module is disabled.'));
   }
 
   /**
@@ -514,7 +514,7 @@ class ModuleDependencyTestCase extends ModuleTestCase {
       '@module' => 'System incompatible core version test',
     )), 'A module that depends on a module with an incompatible core version is marked as such.');
     $checkbox = $this->xpath('//input[@type="checkbox" and @disabled="disabled" and @name="modules[Testing][system_incompatible_core_version_dependencies_test][enable]"]');
-    $this->assert(count($checkbox) == 1, t('Checkbox for the module is disabled.'));
+    $this->assert(count($checkbox) === 1, t('Checkbox for the module is disabled.'));
   }
 
   /**
@@ -599,7 +599,7 @@ class ModuleDependencyTestCase extends ModuleTestCase {
     // Check that the taxonomy module cannot be uninstalled.
     $this->drupalGet('admin/modules/uninstall');
     $checkbox = $this->xpath('//input[@type="checkbox" and @disabled="disabled" and @name="uninstall[comment]"]');
-    $this->assert(count($checkbox) == 1, t('Checkbox for uninstalling the comment module is disabled.'));
+    $this->assert(count($checkbox) === 1, t('Checkbox for uninstalling the comment module is disabled.'));
 
     // Uninstall the forum module, and check that taxonomy now can also be
     // uninstalled.
@@ -839,7 +839,7 @@ class CronRunTestCase extends DrupalWebTestCase {
     variable_set('cron_last', $cron_last);
     variable_set('cron_safe_threshold', $cron_safe_threshold);
     $this->drupalGet('');
-    $this->assertTrue($cron_last == variable_get('cron_last', NULL), t('Cron does not run when the cron threshold is not passed.'));
+    $this->assertTrue($cron_last === variable_get('cron_last', NULL), t('Cron does not run when the cron threshold is not passed.'));
 
     // Test if cron runs when the cron threshold was passed.
     $cron_last = time() - 200;
@@ -859,7 +859,7 @@ class CronRunTestCase extends DrupalWebTestCase {
     $cron_last = time() - 200;
     variable_set('cron_last', $cron_last);
     $this->drupalGet('');
-    $this->assertTrue($cron_last == variable_get('cron_last', NULL), t('Cron does not run when the cron threshold is disabled.'));
+    $this->assertTrue($cron_last === variable_get('cron_last', NULL), t('Cron does not run when the cron threshold is disabled.'));
   }
 
   /**
@@ -1745,7 +1745,7 @@ class SystemThemeFunctionalTest extends DrupalWebTestCase {
       $explicit_file = 'public://logo.png';
       $local_file = $default_theme_path . '/logo.png';
       // Adjust for fully qualified stream wrapper URI in public filesystem.
-      if (file_uri_scheme($input) == 'public') {
+      if (file_uri_scheme($input) === 'public') {
         $implicit_public_file = file_uri_target($input);
         $explicit_file = $input;
         $local_file = strtr($input, array('public:/' => variable_get('file_public_path', conf_path() . '/files')));
@@ -1755,7 +1755,7 @@ class SystemThemeFunctionalTest extends DrupalWebTestCase {
         $explicit_file = $input;
       }
       // Adjust for relative path within public filesystem.
-      elseif ($input == file_uri_target($file->uri)) {
+      elseif ($input === file_uri_target($file->uri)) {
         $implicit_public_file = $input;
         $explicit_file = 'public://' . $input;
         $local_file = variable_get('file_public_path', conf_path() . '/files') . '/' . $input;
@@ -1978,7 +1978,7 @@ class TokenReplaceTestCase extends DrupalWebTestCase {
       $input = $test['prefix'] . '[site:name]' . $test['suffix'];
       $expected = $test['prefix'] . 'Drupal' . $test['suffix'];
       $output = token_replace($input, array(), array('language' => $language_interface));
-      $this->assertTrue($output == $expected, t('Token recognized in string %string', array('%string' => $input)));
+      $this->assertTrue($output === $expected, t('Token recognized in string %string', array('%string' => $input)));
     }
   }
 
@@ -2514,7 +2514,7 @@ class SystemAdminTestCase extends DrupalWebTestCase {
     // Verify that all visible, top-level administration links are listed on
     // the main administration page.
     foreach (menu_get_router() as $path => $item) {
-      if (strpos($path, 'admin/') === 0 && ($item['type'] & MENU_VISIBLE_IN_TREE) && $item['_number_parts'] == 2) {
+      if (strpos($path, 'admin/') === 0 && ($item['type'] & MENU_VISIBLE_IN_TREE) && $item['_number_parts'] === 2) {
         $this->assertLink($item['title']);
         $this->assertLinkByHref($path);
         $this->assertText($item['description']);
@@ -2547,7 +2547,7 @@ class SystemAdminTestCase extends DrupalWebTestCase {
       $this->assertLinkByHref('admin/config/regional/translate');
       // On admin/index only, the administrator should also see a "Configure
       // permissions" link for the Locale module.
-      if ($page == 'admin/index') {
+      if ($page === 'admin/index') {
         $this->assertLinkByHref("admin/people/permissions#module-locale");
       }
 
@@ -2564,7 +2564,7 @@ class SystemAdminTestCase extends DrupalWebTestCase {
       $this->assertLinkByHref('admin/config/regional/translate');
       // This user cannot configure permissions, so even on admin/index should
       // not see a "Configure permissions" link for the Locale module.
-      if ($page == 'admin/index') {
+      if ($page === 'admin/index') {
         $this->assertNoLinkByHref("admin/people/permissions#module-locale");
       }
     }
diff --git a/core/modules/system/system.tokens.inc b/core/modules/system/system.tokens.inc
index 2492890..3e59335 100644
--- a/core/modules/system/system.tokens.inc
+++ b/core/modules/system/system.tokens.inc
@@ -141,7 +141,7 @@ function system_tokens($type, $tokens, array $data = array(), array $options = a
 
   $replacements = array();
 
-  if ($type == 'site') {
+  if ($type === 'site') {
     foreach ($tokens as $name => $original) {
       switch ($name) {
         case 'name':
@@ -173,7 +173,7 @@ function system_tokens($type, $tokens, array $data = array(), array $options = a
     }
   }
 
-  elseif ($type == 'date') {
+  elseif ($type === 'date') {
     if (empty($data['date'])) {
       $date = REQUEST_TIME;
     }
@@ -212,7 +212,7 @@ function system_tokens($type, $tokens, array $data = array(), array $options = a
     }
   }
 
-  elseif ($type == 'file' && !empty($data['file'])) {
+  elseif ($type === 'file' && !empty($data['file'])) {
     $file = $data['file'];
 
     foreach ($tokens as $name => $original) {
diff --git a/core/modules/system/tests/ajax.test b/core/modules/system/tests/ajax.test
index 4f254f8..6f0ae1c 100644
--- a/core/modules/system/tests/ajax.test
+++ b/core/modules/system/tests/ajax.test
@@ -42,10 +42,10 @@ class AJAXTestCase extends DrupalWebTestCase {
         $command['settings'] = array_intersect_key($command['settings'], $needle['settings']);
       }
       // If the command has additional data that we're not testing for, do not
-      // consider that a failure. Also, == instead of ===, because we don't
+      // consider that a failure. Also, === instead of ===, because we don't
       // require the key/value pairs to be in any particular order
       // (http://www.php.net/manual/language.operators.array.php).
-      if (array_intersect_key($command, $needle) == $needle) {
+      if (array_intersect_key($command, $needle) === $needle) {
         $found = TRUE;
         break;
       }
@@ -161,10 +161,10 @@ class AJAXFrameworkTestCase extends AJAXTestCase {
     $found_settings_command = FALSE;
     $found_markup_command = FALSE;
     foreach ($commands as $command) {
-      if ($command['command'] == 'settings' && (array_key_exists('css', $command['settings']['ajaxPageState']) || array_key_exists('js', $command['settings']['ajaxPageState']))) {
+      if ($command['command'] === 'settings' && (array_key_exists('css', $command['settings']['ajaxPageState']) || array_key_exists('js', $command['settings']['ajaxPageState']))) {
         $found_settings_command = TRUE;
       }
-      if (isset($command['data']) && ($command['data'] == $expected_js_html || $command['data'] == $expected_css_html)) {
+      if (isset($command['data']) && ($command['data'] === $expected_js_html || $command['data'] === $expected_css_html)) {
         $found_markup_command = TRUE;
       }
     }
@@ -479,7 +479,7 @@ class AJAXMultiFormTestCase extends AJAXTestCase {
     // each form.
     $this->drupalGet('form-test/two-instances-of-same-form');
     foreach ($field_xpaths as $form_html_id => $field_xpath) {
-      $this->assert(count($this->xpath($field_xpath . $field_items_xpath_suffix)) == 1, t('Found the correct number of field items on the initial page.'));
+      $this->assert(count($this->xpath($field_xpath . $field_items_xpath_suffix)) === 1, t('Found the correct number of field items on the initial page.'));
       $this->assertFieldByXPath($field_xpath . $button_xpath_suffix, NULL, t('Found the "add more" button on the initial page.'));
     }
     $this->assertNoDuplicateIds(t('Initial page contains unique IDs'), 'Other');
@@ -489,7 +489,7 @@ class AJAXMultiFormTestCase extends AJAXTestCase {
     foreach ($field_xpaths as $form_html_id => $field_xpath) {
       for ($i = 0; $i < 2; $i++) {
         $this->drupalPostAJAX(NULL, array(), array($button_name => $button_value), 'system/ajax', array(), array(), $form_html_id);
-        $this->assert(count($this->xpath($field_xpath . $field_items_xpath_suffix)) == $i+2, t('Found the correct number of field items after an AJAX submission.'));
+        $this->assert(count($this->xpath($field_xpath . $field_items_xpath_suffix)) === $i+2, t('Found the correct number of field items after an AJAX submission.'));
         $this->assertFieldByXPath($field_xpath . $button_xpath_suffix, NULL, t('Found the "add more" button after an AJAX submission.'));
         $this->assertNoDuplicateIds(t('Updated page contains unique IDs'), 'Other');
       }
diff --git a/core/modules/system/tests/bootstrap.test b/core/modules/system/tests/bootstrap.test
index 371031a..1d3910b 100644
--- a/core/modules/system/tests/bootstrap.test
+++ b/core/modules/system/tests/bootstrap.test
@@ -41,14 +41,14 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase {
   function testIPAddressHost() {
     // Test the normal IP address.
     $this->assertTrue(
-      ip_address() == $this->remote_ip,
+      ip_address() === $this->remote_ip,
       t('Got remote IP address.')
     );
 
     // Proxy forwarding on but no proxy addresses defined.
     variable_set('reverse_proxy', 1);
     $this->assertTrue(
-      ip_address() == $this->remote_ip,
+      ip_address() === $this->remote_ip,
       t('Proxy forwarding without trusted proxies got remote IP address.')
     );
 
@@ -57,7 +57,7 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase {
     drupal_static_reset('ip_address');
     $_SERVER['REMOTE_ADDR'] = $this->untrusted_ip;
     $this->assertTrue(
-      ip_address() == $this->untrusted_ip,
+      ip_address() === $this->untrusted_ip,
       t('Proxy forwarding with untrusted proxy got remote IP address.')
     );
 
@@ -66,7 +66,7 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase {
     $_SERVER['HTTP_X_FORWARDED_FOR'] = $this->forwarded_ip;
     drupal_static_reset('ip_address');
     $this->assertTrue(
-      ip_address() == $this->forwarded_ip,
+      ip_address() === $this->forwarded_ip,
       t('Proxy forwarding with trusted proxy got forwarded IP address.')
     );
 
@@ -75,7 +75,7 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase {
     $_SERVER['HTTP_X_FORWARDED_FOR'] = implode(', ', array($this->untrusted_ip, $this->forwarded_ip, $this->proxy2_ip));
     drupal_static_reset('ip_address');
     $this->assertTrue(
-      ip_address() == $this->forwarded_ip,
+      ip_address() === $this->forwarded_ip,
       t('Proxy forwarding with trusted 2-tier proxy got forwarded IP address.')
     );
 
@@ -84,7 +84,7 @@ class BootstrapIPAddressTestCase extends DrupalWebTestCase {
     $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] = $this->cluster_ip;
     drupal_static_reset('ip_address');
     $this->assertTrue(
-      ip_address() == $this->cluster_ip,
+      ip_address() === $this->cluster_ip,
       t('Cluster environment got cluster client IP.')
     );
 
diff --git a/core/modules/system/tests/cache.test b/core/modules/system/tests/cache.test
index e5d4435..18bfff1 100644
--- a/core/modules/system/tests/cache.test
+++ b/core/modules/system/tests/cache.test
@@ -18,13 +18,13 @@ class CacheTestCase extends DrupalWebTestCase {
    *   TRUE on pass, FALSE on fail.
    */
   protected function checkCacheExists($cid, $var, $bin = NULL) {
-    if ($bin == NULL) {
+    if ($bin === NULL) {
       $bin = $this->default_bin;
     }
 
     $cached = cache($bin)->get($cid);
 
-    return isset($cached->data) && $cached->data == $var;
+    return isset($cached->data) && $cached->data === $var;
   }
 
   /**
@@ -40,13 +40,13 @@ class CacheTestCase extends DrupalWebTestCase {
    *   The bin the cache item was stored in.
    */
   protected function assertCacheExists($message, $var = NULL, $cid = NULL, $bin = NULL) {
-    if ($bin == NULL) {
+    if ($bin === NULL) {
       $bin = $this->default_bin;
     }
-    if ($cid == NULL) {
+    if ($cid === NULL) {
       $cid = $this->default_cid;
     }
-    if ($var == NULL) {
+    if ($var === NULL) {
       $var = $this->default_value;
     }
 
@@ -64,10 +64,10 @@ class CacheTestCase extends DrupalWebTestCase {
    *   The bin the cache item was stored in.
    */
   function assertCacheRemoved($message, $cid = NULL, $bin = NULL) {
-    if ($bin == NULL) {
+    if ($bin === NULL) {
       $bin = $this->default_bin;
     }
-    if ($cid == NULL) {
+    if ($cid === NULL) {
       $cid = $this->default_cid;
     }
 
@@ -81,7 +81,7 @@ class CacheTestCase extends DrupalWebTestCase {
    *   The bin to perform the wipe on.
    */
   protected function generalWipe($bin = NULL) {
-    if ($bin == NULL) {
+    if ($bin === NULL) {
       $bin = $this->default_bin;
     }
 
@@ -151,7 +151,7 @@ class CacheSavingCase extends CacheTestCase {
 
     cache()->set('test_object', $test_object);
     $cached = cache()->get('test_object');
-    $this->assertTrue(isset($cached->data) && $cached->data == $test_object, t('Object is saved and restored properly.'));
+    $this->assertTrue(isset($cached->data) && $cached->data === $test_object, t('Object is saved and restored properly.'));
   }
 
   /**
@@ -216,7 +216,7 @@ class CacheGetMultipleUnitTest extends CacheTestCase {
     $items = $cache->getMultiple($item_ids);
     $this->assertEqual($items['item1']->data, $item1, t('Item was returned from cache successfully.'));
     $this->assertFalse(isset($items['item2']), t('Item was not returned from the cache.'));
-    $this->assertTrue(count($items) == 1, t('Only valid cache entries returned.'));
+    $this->assertTrue(count($items) === 1, t('Only valid cache entries returned.'));
   }
 }
 
@@ -363,7 +363,7 @@ class CacheClearCase extends CacheTestCase {
 
     // Items in the default cache bin should not be expired.
     $cached = cache()->get($data);
-    $this->assertTrue(isset($cached->data) && $cached->data == $data, 'Cached item retrieved');
+    $this->assertTrue(isset($cached->data) && $cached->data === $data, 'Cached item retrieved');
 
     // Despite the minimum cache lifetime, the item in the 'page' bin should
     // be invalidated for the current user.
diff --git a/core/modules/system/tests/common.test b/core/modules/system/tests/common.test
index dbb471e..65fe209 100644
--- a/core/modules/system/tests/common.test
+++ b/core/modules/system/tests/common.test
@@ -257,62 +257,62 @@ class CommonURLUnitTestCase extends DrupalWebTestCase {
 
       $url = $base . '?q=node/123';
       $result = url('node/123', array('absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . '?q=node/123#foo';
       $result = url('node/123', array('fragment' => 'foo', 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . '?q=node/123&foo';
       $result = url('node/123', array('query' => array('foo' => NULL), 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . '?q=node/123&foo=bar&bar=baz';
       $result = url('node/123', array('query' => array('foo' => 'bar', 'bar' => 'baz'), 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . '?q=node/123&foo#bar';
       $result = url('node/123', array('query' => array('foo' => NULL), 'fragment' => 'bar', 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . '?q=node/123&foo#0';
       $result = url('node/123', array('query' => array('foo' => NULL), 'fragment' => '0', 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . '?q=node/123&foo';
       $result = url('node/123', array('query' => array('foo' => NULL), 'fragment' => '', 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base;
       $result = url('<front>', array('absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       // Enable Clean URLs.
       $GLOBALS['conf']['clean_url'] = 1;
 
       $url = $base . 'node/123';
       $result = url('node/123', array('absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . 'node/123#foo';
       $result = url('node/123', array('fragment' => 'foo', 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . 'node/123?foo';
       $result = url('node/123', array('query' => array('foo' => NULL), 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . 'node/123?foo=bar&bar=baz';
       $result = url('node/123', array('query' => array('foo' => 'bar', 'bar' => 'baz'), 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base . 'node/123?foo#bar';
       $result = url('node/123', array('query' => array('foo' => NULL), 'fragment' => 'bar', 'absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
 
       $url = $base;
       $result = url('<front>', array('absolute' => $absolute));
-      $this->assertEqual($url, $result, "$url == $result");
+      $this->assertEqual($url, $result, "$url === $result");
     }
   }
 
@@ -471,7 +471,7 @@ class CommonSizeUnitTestCase extends DrupalUnitTestCase {
         $this->assertEqual(
           ($result = format_size($input, NULL)),
           $expected,
-          $expected . ' == ' . $result . ' (' . $input . ' bytes)'
+          $expected . ' === ' . $result . ' (' . $input . ' bytes)'
         );
       }
     }
@@ -485,7 +485,7 @@ class CommonSizeUnitTestCase extends DrupalUnitTestCase {
       $this->assertEqual(
         $parsed_size = parse_size($string),
         $size,
-        $size . ' == ' . $parsed_size . ' (' . $string . ')'
+        $size . ' === ' . $parsed_size . ' (' . $string . ')'
       );
     }
 
@@ -494,19 +494,19 @@ class CommonSizeUnitTestCase extends DrupalUnitTestCase {
     $this->assertEqual(
       ($parsed_size = parse_size($string)),
       $size = 23476892,
-      $string . ' == ' . $parsed_size . ' bytes'
+      $string . ' === ' . $parsed_size . ' bytes'
     );
     $string = '76MRandomStringThatShouldBeIgnoredByParseSize.'; // 76 MB
     $this->assertEqual(
       $parsed_size = parse_size($string),
       $size = 79691776,
-      $string . ' == ' . $parsed_size . ' bytes'
+      $string . ' === ' . $parsed_size . ' bytes'
     );
     $string = '76.24 Giggabyte'; // Misspeld text -> 76.24 GB
     $this->assertEqual(
       $parsed_size = parse_size($string),
       $size = 81862076662,
-      $string . ' == ' . $parsed_size . ' bytes'
+      $string . ' === ' . $parsed_size . ' bytes'
     );
   }
 
@@ -518,7 +518,7 @@ class CommonSizeUnitTestCase extends DrupalUnitTestCase {
       $this->assertEqual(
         $size,
         ($parsed_size = parse_size($string = format_size($size, NULL))),
-        $size . ' == ' . $parsed_size . ' (' . $string . ')'
+        $size . ' === ' . $parsed_size . ' (' . $string . ')'
       );
     }
   }
@@ -1632,8 +1632,8 @@ class CommonDrupalRenderTestCase extends DrupalWebTestCase {
     // sorted in the correct order. drupal_render() will return an empty string
     // if used on the same array in the same request.
     $children = element_children($elements);
-    $this->assertTrue(array_shift($children) == 'first', t('Child found in the correct order.'));
-    $this->assertTrue(array_shift($children) == 'second', t('Child found in the correct order.'));
+    $this->assertTrue(array_shift($children) === 'first', t('Child found in the correct order.'));
+    $this->assertTrue(array_shift($children) === 'second', t('Child found in the correct order.'));
 
 
     // The same array structure again, but with #sorted set to TRUE.
@@ -2095,14 +2095,14 @@ class CommonDrupalWriteRecordTestCase extends DrupalWebTestCase {
     // Insert a record with no columns populated.
     $record = array();
     $insert_result = drupal_write_record('test', $record);
-    $this->assertTrue($insert_result == SAVED_NEW, t('Correct value returned when an empty record is inserted with drupal_write_record().'));
+    $this->assertTrue($insert_result === SAVED_NEW, t('Correct value returned when an empty record is inserted with drupal_write_record().'));
 
     // Insert a record - no columns allow NULL values.
     $person = new stdClass();
     $person->name = 'John';
     $person->unknown_column = 123;
     $insert_result = drupal_write_record('test', $person);
-    $this->assertTrue($insert_result == SAVED_NEW, t('Correct value returned when a record is inserted with drupal_write_record() for a table with a single-field primary key.'));
+    $this->assertTrue($insert_result === SAVED_NEW, t('Correct value returned when a record is inserted with drupal_write_record() for a table with a single-field primary key.'));
     $this->assertTrue(isset($person->id), t('Primary key is set on record created with drupal_write_record().'));
     $this->assertIdentical($person->age, 0, t('Age field set to default value.'));
     $this->assertIdentical($person->job, 'Undefined', t('Job field set to default value.'));
@@ -2119,7 +2119,7 @@ class CommonDrupalWriteRecordTestCase extends DrupalWebTestCase {
     $person->age = 27;
     $person->job = NULL;
     $update_result = drupal_write_record('test', $person, array('id'));
-    $this->assertTrue($update_result == SAVED_UPDATED, t('Correct value returned when a record updated with drupal_write_record() for table with single-field primary key.'));
+    $this->assertTrue($update_result === SAVED_UPDATED, t('Correct value returned when a record updated with drupal_write_record() for table with single-field primary key.'));
 
     // Verify that the record was updated.
     $result = db_query("SELECT * FROM {test} WHERE id = :id", array(':id' => $person->id))->fetchObject();
@@ -2191,7 +2191,7 @@ class CommonDrupalWriteRecordTestCase extends DrupalWebTestCase {
     // layer should return zero for number of affected rows, but
     // db_write_record() should still return SAVED_UPDATED.
     $update_result = drupal_write_record('test_null', $person, array('id'));
-    $this->assertTrue($update_result == SAVED_UPDATED, t('Correct value returned when a valid update is run without changing any values.'));
+    $this->assertTrue($update_result === SAVED_UPDATED, t('Correct value returned when a valid update is run without changing any values.'));
 
     // Insert an object record for a table with a multi-field primary key.
     $node_access = new stdClass();
@@ -2199,11 +2199,11 @@ class CommonDrupalWriteRecordTestCase extends DrupalWebTestCase {
     $node_access->gid = mt_rand();
     $node_access->realm = $this->randomName();
     $insert_result = drupal_write_record('node_access', $node_access);
-    $this->assertTrue($insert_result == SAVED_NEW, t('Correct value returned when a record is inserted with drupal_write_record() for a table with a multi-field primary key.'));
+    $this->assertTrue($insert_result === SAVED_NEW, t('Correct value returned when a record is inserted with drupal_write_record() for a table with a multi-field primary key.'));
 
     // Update the record.
     $update_result = drupal_write_record('node_access', $node_access, array('nid', 'gid', 'realm'));
-    $this->assertTrue($update_result == SAVED_UPDATED, t('Correct value returned when a record is updated with drupal_write_record() for a table with a multi-field primary key.'));
+    $this->assertTrue($update_result === SAVED_UPDATED, t('Correct value returned when a record is updated with drupal_write_record() for a table with a multi-field primary key.'));
   }
 
 }
@@ -2243,7 +2243,7 @@ class CommonSimpleTestErrorCollectorTestCase extends DrupalWebTestCase {
     $this->drupalGet('error-test/generate-warnings-with-report');
     $this->assertEqual(count($this->collectedErrors), 3, t('Three errors were collected'));
 
-    if (count($this->collectedErrors) == 3) {
+    if (count($this->collectedErrors) === 3) {
       $this->assertError($this->collectedErrors[0], 'Notice', 'error_test_generate_warnings()', 'error_test.module', 'Undefined variable: bananas');
       $this->assertError($this->collectedErrors[1], 'Warning', 'error_test_generate_warnings()', 'error_test.module', 'Division by zero');
       $this->assertError($this->collectedErrors[2], 'User warning', 'error_test_generate_warnings()', 'error_test.module', 'Drupal is awesome');
@@ -2273,7 +2273,7 @@ class CommonSimpleTestErrorCollectorTestCase extends DrupalWebTestCase {
     // notices, PHP fatal errors, etc.), and let all the 'errors' from the
     // 'User notice' group bubble up to the parent classes to be handled (and
     // eventually displayed) as normal.
-    if ($group == 'User notice') {
+    if ($group === 'User notice') {
       parent::error($message, $group, $caller);
     }
     // Everything else should be collected but not propagated.
@@ -2695,9 +2695,9 @@ class CommonJSONUnitTestCase extends DrupalUnitTestCase {
     $this->assertTrue(strlen($json) > strlen($str), t('A JSON encoded string is larger than the source string.'));
 
     // The first and last characters should be ", and no others.
-    $this->assertTrue($json[0] == '"', t('A JSON encoded string begins with ".'));
-    $this->assertTrue($json[strlen($json) - 1] == '"', t('A JSON encoded string ends with ".'));
-    $this->assertTrue(substr_count($json, '"') == 2, t('A JSON encoded string contains exactly two ".'));
+    $this->assertTrue($json[0] === '"', t('A JSON encoded string begins with ".'));
+    $this->assertTrue($json[strlen($json) - 1] === '"', t('A JSON encoded string ends with ".'));
+    $this->assertTrue(substr_count($json, '"') === 2, t('A JSON encoded string contains exactly two ".'));
 
     // Verify that encoding/decoding is reversible.
     $json_decoded = drupal_json_decode($json);
@@ -2747,7 +2747,7 @@ class CommonDrupalAddFeedTestCase extends DrupalWebTestCase {
     // Possible permutations of drupal_add_feed() to test.
     // - 'input_url': the path passed to drupal_add_feed(),
     // - 'output_url': the expected URL to be found in the header.
-    // - 'title' == the title of the feed as passed into drupal_add_feed().
+    // - 'title' === the title of the feed as passed into drupal_add_feed().
     $urls = array(
       'path without title' => array(
         'input_url' => $path,
diff --git a/core/modules/system/tests/file.test b/core/modules/system/tests/file.test
index c5eced1..c872591 100644
--- a/core/modules/system/tests/file.test
+++ b/core/modules/system/tests/file.test
@@ -71,13 +71,13 @@ class FileTestCase extends DrupalWebTestCase {
    *   File object to compare.
    */
   function assertFileUnchanged($before, $after) {
-    $this->assertEqual($before->fid, $after->fid, t('File id is the same: %file1 == %file2.', array('%file1' => $before->fid, '%file2' => $after->fid)), 'File unchanged');
-    $this->assertEqual($before->uid, $after->uid, t('File owner is the same: %file1 == %file2.', array('%file1' => $before->uid, '%file2' => $after->uid)), 'File unchanged');
-    $this->assertEqual($before->filename, $after->filename, t('File name is the same: %file1 == %file2.', array('%file1' => $before->filename, '%file2' => $after->filename)), 'File unchanged');
-    $this->assertEqual($before->uri, $after->uri, t('File path is the same: %file1 == %file2.', array('%file1' => $before->uri, '%file2' => $after->uri)), 'File unchanged');
-    $this->assertEqual($before->filemime, $after->filemime, t('File MIME type is the same: %file1 == %file2.', array('%file1' => $before->filemime, '%file2' => $after->filemime)), 'File unchanged');
-    $this->assertEqual($before->filesize, $after->filesize, t('File size is the same: %file1 == %file2.', array('%file1' => $before->filesize, '%file2' => $after->filesize)), 'File unchanged');
-    $this->assertEqual($before->status, $after->status, t('File status is the same: %file1 == %file2.', array('%file1' => $before->status, '%file2' => $after->status)), 'File unchanged');
+    $this->assertEqual($before->fid, $after->fid, t('File id is the same: %file1 === %file2.', array('%file1' => $before->fid, '%file2' => $after->fid)), 'File unchanged');
+    $this->assertEqual($before->uid, $after->uid, t('File owner is the same: %file1 === %file2.', array('%file1' => $before->uid, '%file2' => $after->uid)), 'File unchanged');
+    $this->assertEqual($before->filename, $after->filename, t('File name is the same: %file1 === %file2.', array('%file1' => $before->filename, '%file2' => $after->filename)), 'File unchanged');
+    $this->assertEqual($before->uri, $after->uri, t('File path is the same: %file1 === %file2.', array('%file1' => $before->uri, '%file2' => $after->uri)), 'File unchanged');
+    $this->assertEqual($before->filemime, $after->filemime, t('File MIME type is the same: %file1 === %file2.', array('%file1' => $before->filemime, '%file2' => $after->filemime)), 'File unchanged');
+    $this->assertEqual($before->filesize, $after->filesize, t('File size is the same: %file1 === %file2.', array('%file1' => $before->filesize, '%file2' => $after->filesize)), 'File unchanged');
+    $this->assertEqual($before->status, $after->status, t('File status is the same: %file1 === %file2.', array('%file1' => $before->status, '%file2' => $after->status)), 'File unchanged');
   }
 
   /**
@@ -102,8 +102,8 @@ class FileTestCase extends DrupalWebTestCase {
    *   File object to compare.
    */
   function assertSameFile($file1, $file2) {
-    $this->assertEqual($file1->fid, $file2->fid, t('Files have the same ids: %file1 == %file2.', array('%file1' => $file1->fid, '%file2-fid' => $file2->fid)), 'Same file');
-    $this->assertEqual($file1->uri, $file2->uri, t('Files have the same path: %file1 == %file2.', array('%file1' => $file1->uri, '%file2' => $file2->uri)), 'Same file');
+    $this->assertEqual($file1->fid, $file2->fid, t('Files have the same ids: %file1 === %file2.', array('%file1' => $file1->fid, '%file2-fid' => $file2->fid)), 'Same file');
+    $this->assertEqual($file1->uri, $file2->uri, t('Files have the same path: %file1 === %file2.', array('%file1' => $file1->uri, '%file2' => $file2->uri)), 'Same file');
   }
 
   /**
@@ -128,7 +128,7 @@ class FileTestCase extends DrupalWebTestCase {
     // read/write/execute bits. On Windows, chmod() ignores the "group" and
     // "other" bits, and fileperms() returns the "user" bits in all three
     // positions. $expected_mode is updated to reflect this.
-    if (substr(PHP_OS, 0, 3) == 'WIN') {
+    if (substr(PHP_OS, 0, 3) === 'WIN') {
       // Reset the "group" and "other" bits.
       $expected_mode = $expected_mode & 0700;
       // Shift the "user" bits to the "group" and "other" positions also.
@@ -163,7 +163,7 @@ class FileTestCase extends DrupalWebTestCase {
     // read/write/execute bits. On Windows, chmod() ignores the "group" and
     // "other" bits, and fileperms() returns the "user" bits in all three
     // positions. $expected_mode is updated to reflect this.
-    if (substr(PHP_OS, 0, 3) == 'WIN') {
+    if (substr(PHP_OS, 0, 3) === 'WIN') {
       // Reset the "group" and "other" bits.
       $expected_mode = $expected_mode & 0700;
       // Shift the "user" bits to the "group" and "other" positions also.
@@ -301,10 +301,10 @@ class FileHookTestCase extends FileTestCase {
     $actual_count = count(file_test_get_calls($hook));
 
     if (!isset($message)) {
-      if ($actual_count == $expected_count) {
+      if ($actual_count === $expected_count) {
         $message = t('hook_file_@name was called correctly.', array('@name' => $hook));
       }
-      elseif ($expected_count == 0) {
+      elseif ($expected_count === 0) {
         $message = format_plural($actual_count, 'hook_file_@name was not expected to be called but was actually called once.', 'hook_file_@name was not expected to be called but was actually called @count times.', array('@name' => $hook, '@count' => $actual_count));
       }
       else {
@@ -2458,14 +2458,14 @@ class FileDownloadTest extends FileTestCase {
     $url = file_create_url($file->uri);
     $this->assertEqual($url, $expected_url, t('Generated URL matches expected URL.'));
 
-    if ($scheme == 'private') {
+    if ($scheme === 'private') {
       // Tell the implementation of hook_file_download() in file_test.module
       // that this file may be downloaded.
       file_test_set_return('download', array('x-foo' => 'Bar'));
     }
 
     $this->drupalGet($url);
-    if ($this->assertResponse(200) == 'pass') {
+    if ($this->assertResponse(200) === 'pass') {
       $this->assertRaw(file_get_contents($file->uri), t('Contents of the file are correct.'));
     }
 
diff --git a/core/modules/system/tests/filetransfer.test b/core/modules/system/tests/filetransfer.test
index 8f447d9..be4d111 100644
--- a/core/modules/system/tests/filetransfer.test
+++ b/core/modules/system/tests/filetransfer.test
@@ -114,7 +114,7 @@ class TestFileTransfer extends FileTransfer {
 
   function connect() {
     $parts = explode(':', $this->hostname);
-    $port = (count($parts) == 2) ? $parts[1] : $this->port;
+    $port = (count($parts) === 2) ? $parts[1] : $this->port;
     $this->connection = new MockTestConnection();
     $this->connection->connectionString = 'test://' . urlencode($this->username) . ':' . urlencode($this->password) . "@$this->host:$this->port/";
   }
diff --git a/core/modules/system/tests/form.test b/core/modules/system/tests/form.test
index eed1287..6a426a1 100644
--- a/core/modules/system/tests/form.test
+++ b/core/modules/system/tests/form.test
@@ -108,7 +108,7 @@ class FormsTestCase extends DrupalWebTestCase {
           // when you try to render them like this, so we ignore those for
           // testing the required marker.
           // @todo Fix this work-around (http://drupal.org/node/588438).
-          $form_output = ($type == 'radios') ? '' : drupal_render($form);
+          $form_output = ($type === 'radios') ? '' : drupal_render($form);
           if ($required) {
             // Make sure we have a form error for this element.
             $this->assertTrue(isset($errors[$element]), "Check empty($key) '$type' field '$element'");
@@ -122,7 +122,7 @@ class FormsTestCase extends DrupalWebTestCase {
               // Make sure the form element is *not* marked as required.
               $this->assertFalse(preg_match($required_marker_preg, $form_output), "Optional '$type' field is not marked as required");
             }
-            if ($type == 'select') {
+            if ($type === 'select') {
               // Select elements are going to have validation errors with empty
               // input, since those are illegal choices. Just make sure the
               // error is not "field is required".
@@ -431,7 +431,7 @@ class FormsTestCase extends DrupalWebTestCase {
           $expected_value = $form[$key]['#default_value'];
         }
 
-        if ($key == 'checkboxes_multiple') {
+        if ($key === 'checkboxes_multiple') {
           // Checkboxes values are not filtered out.
           $values[$key] = array_filter($values[$key]);
         }
@@ -1458,7 +1458,7 @@ class FormsRebuildTestCase extends DrupalWebTestCase {
     // field items in the field for which we just added an item.
     $this->drupalGet('node/add/page');
     $this->drupalPostAJAX(NULL, array(), array('field_ajax_test_add_more' => t('Add another item')), 'system/ajax', array(), array(), 'page-node-form');
-    $this->assert(count($this->xpath('//div[contains(@class, "field-name-field-ajax-test")]//input[@type="text"]')) == 2, t('AJAX submission succeeded.'));
+    $this->assert(count($this->xpath('//div[contains(@class, "field-name-field-ajax-test")]//input[@type="text"]')) === 2, t('AJAX submission succeeded.'));
 
     // Submit the form with the non-Ajax "Save" button, leaving the title field
     // blank to trigger a validation error, and ensure that a validation error
@@ -1470,11 +1470,11 @@ class FormsRebuildTestCase extends DrupalWebTestCase {
 
     // Ensure that the form contains two items in the multi-valued field, so we
     // know we're testing a form that was correctly retrieved from cache.
-    $this->assert(count($this->xpath('//form[contains(@id, "page-node-form")]//div[contains(@class, "form-item-field-ajax-test")]//input[@type="text"]')) == 2, t('Form retained its state from cache.'));
+    $this->assert(count($this->xpath('//form[contains(@id, "page-node-form")]//div[contains(@class, "form-item-field-ajax-test")]//input[@type="text"]')) === 2, t('Form retained its state from cache.'));
 
     // Ensure that the form's action is correct.
     $forms = $this->xpath('//form[contains(@class, "node-page-form")]');
-    $this->assert(count($forms) == 1 && $forms[0]['action'] == url('node/add/page'), t('Re-rendered form contains the correct action value.'));
+    $this->assert(count($forms) === 1 && $forms[0]['action'] === url('node/add/page'), t('Re-rendered form contains the correct action value.'));
   }
 }
 
@@ -1553,7 +1553,7 @@ class FormsProgrammaticTestCase extends DrupalWebTestCase {
       '%values' => print_r($values, TRUE),
       '%errors' => $valid_form ? t('None') : implode(' ', $errors),
     );
-    $this->assertTrue($valid_input == $valid_form, t('Input values: %values<br/>Validation handler errors: %errors', $args));
+    $this->assertTrue($valid_input === $valid_form, t('Input values: %values<br/>Validation handler errors: %errors', $args));
 
     // We check submitted values only if we have a valid input.
     if ($valid_input) {
@@ -1561,7 +1561,7 @@ class FormsProgrammaticTestCase extends DrupalWebTestCase {
       // submission handler was properly executed.
       $stored_values = $form_state['storage']['programmatic_form_submit'];
       foreach ($values as $key => $value) {
-        $this->assertTrue(isset($stored_values[$key]) && $stored_values[$key] == $value, t('Submission handler correctly executed: %stored_key is %stored_value', array('%stored_key' => $key, '%stored_value' => print_r($value, TRUE))));
+        $this->assertTrue(isset($stored_values[$key]) && $stored_values[$key] === $value, t('Submission handler correctly executed: %stored_key is %stored_value', array('%stored_key' => $key, '%stored_value' => print_r($value, TRUE))));
       }
     }
   }
@@ -1833,7 +1833,7 @@ class FormCheckboxTestCase extends DrupalWebTestCase {
     foreach ($checkboxes as $checkbox) {
       $checked = isset($checkbox['checked']);
       $name = (string) $checkbox['name'];
-      $this->assertIdentical($checked, $name == 'checkbox_zero_default[0]' || $name == 'checkbox_string_zero_default[0]', t('Checkbox %name correctly checked', array('%name' => $name)));
+      $this->assertIdentical($checked, $name === 'checkbox_zero_default[0]' || $name === 'checkbox_string_zero_default[0]', t('Checkbox %name correctly checked', array('%name' => $name)));
     }
     $edit = array('checkbox_off[0]' => '0');
     $this->drupalPost('form-test/checkboxes-zero/0', $edit, 'Save');
@@ -1841,7 +1841,7 @@ class FormCheckboxTestCase extends DrupalWebTestCase {
     foreach ($checkboxes as $checkbox) {
       $checked = isset($checkbox['checked']);
       $name = (string) $checkbox['name'];
-      $this->assertIdentical($checked, $name == 'checkbox_off[0]' || $name == 'checkbox_zero_default[0]' || $name == 'checkbox_string_zero_default[0]', t('Checkbox %name correctly checked', array('%name' => $name)));
+      $this->assertIdentical($checked, $name === 'checkbox_off[0]' || $name === 'checkbox_zero_default[0]' || $name === 'checkbox_string_zero_default[0]', t('Checkbox %name correctly checked', array('%name' => $name)));
     }
   }
 }
diff --git a/core/modules/system/tests/image.test b/core/modules/system/tests/image.test
index deead57..aa3b234 100644
--- a/core/modules/system/tests/image.test
+++ b/core/modules/system/tests/image.test
@@ -231,7 +231,7 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
    */
   function colorsAreEqual($color_a, $color_b) {
     // Fully transparent pixels are equal, regardless of RGB.
-    if ($color_a[3] == 127 && $color_b[3] == 127) {
+    if ($color_a[3] === 127 && $color_b[3] === 127) {
       return TRUE;
     }
 
@@ -251,7 +251,7 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
     $color_index = imagecolorat($image->resource, $x, $y);
 
     $transparent_index = imagecolortransparent($image->resource);
-    if ($color_index == $transparent_index) {
+    if ($color_index === $transparent_index) {
       return array(0, 0, 0, 127);
     }
 
@@ -394,8 +394,8 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
 
         // Transparent GIFs and the imagefilter function don't work together.
         // There is a todo in image.gd.inc to correct this.
-        if ($image->info['extension'] == 'gif') {
-          if ($op == 'desaturate') {
+        if ($image->info['extension'] === 'gif') {
+          if ($op === 'desaturate') {
             $values['corners'][3] = $this->white;
           }
         }
diff --git a/core/modules/system/tests/installer.test b/core/modules/system/tests/installer.test
index 82e9957..72eabc8 100644
--- a/core/modules/system/tests/installer.test
+++ b/core/modules/system/tests/installer.test
@@ -40,7 +40,7 @@ class InstallerLanguageTestCase extends DrupalWebTestCase {
 
     foreach ($expected_translation_files as $langcode => $files_expected) {
       $files_found = install_find_translation_files($langcode);
-      $this->assertTrue(count($files_found) == count($files_expected), t('@count installer languages found.', array('@count' => count($files_expected))));
+      $this->assertTrue(count($files_found) === count($files_expected), t('@count installer languages found.', array('@count' => count($files_expected))));
       foreach ($files_found as $file) {
         $this->assertTrue(in_array($file->filename, $files_expected), t('@file found.', array('@file' => $file->filename)));
       }
diff --git a/core/modules/system/tests/menu.test b/core/modules/system/tests/menu.test
index 8d1d651..8ed5381 100644
--- a/core/modules/system/tests/menu.test
+++ b/core/modules/system/tests/menu.test
@@ -262,11 +262,11 @@ class MenuRouterTestCase extends DrupalWebTestCase {
 
     $this->drupalGet('user/login');
     // Check that we got to 'user'.
-    $this->assertTrue($this->url == url('user', array('absolute' => TRUE)), t("Logged-in user redirected to q=user on accessing q=user/login"));
+    $this->assertTrue($this->url === url('user', array('absolute' => TRUE)), t("Logged-in user redirected to q=user on accessing q=user/login"));
 
     // user/register should redirect to user/UID/edit.
     $this->drupalGet('user/register');
-    $this->assertTrue($this->url == url('user/' . $this->loggedInUser->uid . '/edit', array('absolute' => TRUE)), t("Logged-in user redirected to q=user/UID/edit on accessing q=user/register"));
+    $this->assertTrue($this->url === url('user/' . $this->loggedInUser->uid . '/edit', array('absolute' => TRUE)), t("Logged-in user redirected to q=user/UID/edit on accessing q=user/register"));
   }
 
   /**
@@ -966,7 +966,7 @@ class MenuTreeDataTestCase extends DrupalUnitTestCase {
    *   TRUE if the assertion succeeded, FALSE otherwise.
    */
   protected function assertSameLink($link1, $link2, $message = '') {
-    return $this->assert($link1['mlid'] == $link2['mlid'], $message ? $message : t('First link is identical to second link'));
+    return $this->assert($link1['mlid'] === $link2['mlid'], $message ? $message : t('First link is identical to second link'));
   }
 }
 
@@ -1269,7 +1269,7 @@ class MenuBreadcrumbTestCase extends MenuWebTestCase {
       $trail = array();
       $this->assertBreadcrumb('node', $trail);
 
-      if ($menu == 'navigation') {
+      if ($menu === 'navigation') {
         $parent = $node2;
         $child = $node3;
       }
@@ -1370,7 +1370,7 @@ class MenuBreadcrumbTestCase extends MenuWebTestCase {
         ':menu' => 'block-system-navigation',
         ':href' => url($link['link_path']),
       ));
-      $this->assertTrue(count($elements) == 1, "Link to {$link['link_path']} appears only once.");
+      $this->assertTrue(count($elements) === 1, "Link to {$link['link_path']} appears only once.");
 
       // Next iteration should expect this tag as parent link.
       // Note: Term name, not link name, due to taxonomy_term_page().
diff --git a/core/modules/system/tests/modules/common_test/common_test.module b/core/modules/system/tests/modules/common_test/common_test.module
index 187fee5..377c98b 100644
--- a/core/modules/system/tests/modules/common_test/common_test.module
+++ b/core/modules/system/tests/modules/common_test/common_test.module
@@ -93,7 +93,7 @@ function common_test_drupal_goto_land_fail() {
  * Implements hook_drupal_goto_alter().
  */
 function common_test_drupal_goto_alter(&$path, &$options, &$http_response_code) {
-  if ($path == 'common-test/drupal_goto/fail') {
+  if ($path === 'common-test/drupal_goto/fail') {
     $path = 'common-test/drupal_goto/redirect';
   }
 }
@@ -208,7 +208,7 @@ function common_test_module_implements_alter(&$implementations, $hook) {
   // block module implementations run after all the other modules. Note that
   // when drupal_alter() is called with an array of types, the first type is
   // considered primary and controls the module order.
-  if ($hook == 'drupal_alter_alter' && isset($implementations['block'])) {
+  if ($hook === 'drupal_alter_alter' && isset($implementations['block'])) {
     $group = $implementations['block'];
     unset($implementations['block']);
     $implementations['block'] = $group;
@@ -237,7 +237,7 @@ function theme_common_test_foo($variables) {
  * Implements hook_library_info_alter().
  */
 function common_test_library_info_alter(&$libraries, $module) {
-  if ($module == 'system' && isset($libraries['farbtastic'])) {
+  if ($module === 'system' && isset($libraries['farbtastic'])) {
     // Change the title of Farbtastic to "Farbtastic: Altered Library".
     $libraries['farbtastic']['title'] = 'Farbtastic: Altered Library';
     // Make Farbtastic depend on jQuery Form to test library dependencies.
diff --git a/core/modules/system/tests/modules/database_test/database_test.test b/core/modules/system/tests/modules/database_test/database_test.test
index bec0c16..e67081e 100644
--- a/core/modules/system/tests/modules/database_test/database_test.test
+++ b/core/modules/system/tests/modules/database_test/database_test.test
@@ -2303,7 +2303,7 @@ class DatabaseSelectPagerDefaultTestCase extends DatabaseTestCase {
       $this->drupalGet('database_test/pager_query_even/' . $limit, array('query' => array('page' => $page)));
       $data = json_decode($this->drupalGetContent());
 
-      if ($page == $num_pages) {
+      if ($page === $num_pages) {
         $correct_number = $count - ($limit * $page);
       }
 
@@ -2337,7 +2337,7 @@ class DatabaseSelectPagerDefaultTestCase extends DatabaseTestCase {
       $this->drupalGet('database_test/pager_query_odd/' . $limit, array('query' => array('page' => $page)));
       $data = json_decode($this->drupalGetContent());
 
-      if ($page == $num_pages) {
+      if ($page === $num_pages) {
         $correct_number = $count - ($limit * $page);
       }
 
@@ -3207,7 +3207,7 @@ class DatabaseInvalidDataTestCase extends DatabaseTestCase {
       // Check if the first record was inserted.
       $name = db_query('SELECT name FROM {test} WHERE age = :age', array(':age' => 63))->fetchField();
 
-      if ($name == 'Elvis') {
+      if ($name === 'Elvis') {
         if (!Database::getConnection()->supportsTransactions()) {
           // This is an expected fail.
           // Database engines that don't support transactions can leave partial
@@ -3333,7 +3333,7 @@ class DatabaseTransactionTestCase extends DatabaseTestCase {
       // Roll back the transaction, if requested.
       // This rollback should propagate to the last savepoint.
       $txn->rollback();
-      $this->assertTrue(($connection->transactionDepth() == $depth), t('Transaction has rolled back to the last savepoint after calling rollback().'));
+      $this->assertTrue(($connection->transactionDepth() === $depth), t('Transaction has rolled back to the last savepoint after calling rollback().'));
     }
   }
 
@@ -3391,7 +3391,7 @@ class DatabaseTransactionTestCase extends DatabaseTestCase {
       // Roll back the transaction, if requested.
       // This rollback should propagate to the last savepoint.
       $txn->rollback();
-      $this->assertTrue(($connection->transactionDepth() == $depth), t('Transaction has rolled back to the last savepoint after calling rollback().'));
+      $this->assertTrue(($connection->transactionDepth() === $depth), t('Transaction has rolled back to the last savepoint after calling rollback().'));
     }
   }
 
diff --git a/core/modules/system/tests/modules/file_test/file_test.module b/core/modules/system/tests/modules/file_test/file_test.module
index 8a9a84a..422149d 100644
--- a/core/modules/system/tests/modules/file_test/file_test.module
+++ b/core/modules/system/tests/modules/file_test/file_test.module
@@ -322,7 +322,7 @@ function file_test_file_url_alter(&$uri) {
     return;
   }
   // Test alteration of file URLs to use a CDN.
-  elseif ($alter_mode == 'cdn') {
+  elseif ($alter_mode === 'cdn') {
     $cdn_extensions = array('css', 'js', 'gif', 'jpg', 'jpeg', 'png');
 
     // Most CDNs don't support private file transfers without a lot of hassle,
@@ -358,11 +358,11 @@ function file_test_file_url_alter(&$uri) {
     }
   }
   // Test alteration of file URLs to use root-relative URLs.
-  elseif ($alter_mode == 'root-relative') {
+  elseif ($alter_mode === 'root-relative') {
     // Only serve shipped files and public created files with root-relative
     // URLs.
     $scheme = file_uri_scheme($uri);
-    if (!$scheme || $scheme == 'public') {
+    if (!$scheme || $scheme === 'public') {
       // Shipped files.
       if (!$scheme) {
         $path = $uri;
@@ -381,11 +381,11 @@ function file_test_file_url_alter(&$uri) {
     }
   }
   // Test alteration of file URLs to use protocol-relative URLs.
-  elseif ($alter_mode == 'protocol-relative') {
+  elseif ($alter_mode === 'protocol-relative') {
     // Only serve shipped files and public created files with protocol-relative
     // URLs.
     $scheme = file_uri_scheme($uri);
-    if (!$scheme || $scheme == 'public') {
+    if (!$scheme || $scheme === 'public') {
       // Shipped files.
       if (!$scheme) {
         $path = $uri;
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index a2a2815..b1eaa9c 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -281,7 +281,7 @@ function block_form_form_test_alter_form_alter(&$form, &$form_state) {
  * Implements hook_form_alter().
  */
 function form_test_form_alter(&$form, &$form_state, $form_id) {
-  if ($form_id == 'form_test_alter_form') {
+  if ($form_id === 'form_test_alter_form') {
     drupal_set_message('form_test_form_alter() executed.');
   }
 }
@@ -336,7 +336,7 @@ function form_test_validate_form($form, &$form_state) {
  */
 function form_test_element_validate_name(&$element, &$form_state) {
   $triggered = FALSE;
-  if ($form_state['values']['name'] == 'element_validate') {
+  if ($form_state['values']['name'] === 'element_validate') {
     // Alter the form element.
     $element['#value'] = '#value changed by #element_validate';
     // Alter the submitted value in $form_state.
@@ -344,7 +344,7 @@ function form_test_element_validate_name(&$element, &$form_state) {
 
     $triggered = TRUE;
   }
-  if ($form_state['values']['name'] == 'element_validate_access') {
+  if ($form_state['values']['name'] === 'element_validate_access') {
     $form_state['storage']['form_test_name'] = $form_state['values']['name'];
     // Alter the form element.
     $element['#access'] = FALSE;
@@ -371,7 +371,7 @@ function form_test_element_validate_name(&$element, &$form_state) {
  * Form validation handler for form_test_validate_form().
  */
 function form_test_validate_form_validate(&$form, &$form_state) {
-  if ($form_state['values']['name'] == 'validate') {
+  if ($form_state['values']['name'] === 'validate') {
     // Alter the form element.
     $form['name']['#value'] = '#value changed by #validate';
     // Alter the submitted value in $form_state.
@@ -497,7 +497,7 @@ function form_test_limit_validation_errors_form($form, &$form_state) {
  * Form element validation handler for the 'test' element.
  */
 function form_test_limit_validation_errors_element_validate_test(&$element, &$form_state) {
-  if ($element['#value'] == 'invalid') {
+  if ($element['#value'] === 'invalid') {
     form_error($element, t('@label element is invalid', array('@label' => $element['#title'])));
   }
 }
@@ -773,7 +773,7 @@ function form_test_storage_element_validate_value_cached($element, &$form_state)
   // This presumes that another submitted form value triggers a validation error
   // elsewhere in the form. Form API should still update the cached form storage
   // though.
-  if (isset($_REQUEST['cache']) && $form_state['values']['value'] == 'change_title') {
+  if (isset($_REQUEST['cache']) && $form_state['values']['value'] === 'change_title') {
     $form_state['storage']['thing']['changed'] = TRUE;
   }
 }
@@ -995,7 +995,7 @@ function _form_test_checkbox($form, &$form_state) {
     '#title' => 'disabled_checkbox_off',
   );
 
-  // A checkbox is active when #default_value == #return_value.
+  // A checkbox is active when #default_value === #return_value.
   $form['checkbox_on'] = array(
     '#type' => 'checkbox',
     '#return_value' => 'checkbox_on',
@@ -1435,7 +1435,7 @@ function _form_test_disabled_elements($form, &$form_state) {
       '#default_value' => array('test_2' => 'test_2'),
       // The keys of #test_hijack_value need to match the #name of the control.
       // @see FormsTestCase::testDisabledElements()
-      '#test_hijack_value' => $type == 'select' ? array('' => 'test_1') : array('test_1' => 'test_1'),
+      '#test_hijack_value' => $type === 'select' ? array('' => 'test_1') : array('test_1' => 'test_1'),
       '#disabled' => TRUE,
     );
   }
@@ -1883,7 +1883,7 @@ function form_test_clicked_button($form, &$form_state) {
         '#name' => $name,
       );
       // Image buttons need a #src; the others need a #value.
-      if ($type == 'image_button') {
+      if ($type === 'image_button') {
         $form[$name]['#src'] = 'core/misc/druplicon.png';
       }
       else {
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.module b/core/modules/system/tests/modules/menu_test/menu_test.module
index 0b954ae..5c290fc 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.module
+++ b/core/modules/system/tests/modules/menu_test/menu_test.module
@@ -439,15 +439,15 @@ function menu_test_theme_page_callback($inherited = FALSE) {
  */
 function menu_test_theme_callback($argument) {
   // Test using the variable administrative theme.
-  if ($argument == 'use-admin-theme') {
+  if ($argument === 'use-admin-theme') {
     return variable_get('admin_theme');
   }
   // Test using a theme that exists, but may or may not be enabled.
-  elseif ($argument == 'use-stark-theme') {
+  elseif ($argument === 'use-stark-theme') {
     return 'stark';
   }
   // Test using a theme that does not exist.
-  elseif ($argument == 'use-fake-theme') {
+  elseif ($argument === 'use-fake-theme') {
     return 'fake_theme';
   }
   // For any other value of the URL argument, do not return anything. This
@@ -538,7 +538,7 @@ function menu_test_static_variable($value = NULL) {
  */
 function menu_test_menu_site_status_alter(&$menu_site_status, $path) {
   // Allow access to ?q=menu_login_callback even if in maintenance mode.
-  if ($menu_site_status == MENU_SITE_OFFLINE && $path == 'menu_login_callback') {
+  if ($menu_site_status === MENU_SITE_OFFLINE && $path === 'menu_login_callback') {
     $menu_site_status = MENU_SITE_ONLINE;
   }
 }
diff --git a/core/modules/system/tests/modules/module_test/module_test.module b/core/modules/system/tests/modules/module_test/module_test.module
index dd5930a..6b34700 100644
--- a/core/modules/system/tests/modules/module_test/module_test.module
+++ b/core/modules/system/tests/modules/module_test/module_test.module
@@ -15,41 +15,41 @@ function module_test_permission() {
  * Manipulate module dependencies to test dependency chains.
  */
 function module_test_system_info_alter(&$info, $file, $type) {
-  if (variable_get('dependency_test', FALSE) == 'missing dependency') {
-    if ($file->name == 'forum') {
+  if (variable_get('dependency_test', FALSE) === 'missing dependency') {
+    if ($file->name === 'forum') {
       // Make forum module depend on poll.
       $info['dependencies'][] = 'poll';
     }
-    elseif ($file->name == 'poll') {
+    elseif ($file->name === 'poll') {
       // Make poll depend on a made-up module.
       $info['dependencies'][] = 'foo';
     }
   }
-  elseif (variable_get('dependency_test', FALSE) == 'dependency') {
-    if ($file->name == 'forum') {
+  elseif (variable_get('dependency_test', FALSE) === 'dependency') {
+    if ($file->name === 'forum') {
       // Make the forum module depend on poll.
       $info['dependencies'][] = 'poll';
     }
-    elseif ($file->name == 'poll') {
+    elseif ($file->name === 'poll') {
       // Make poll depend on php module.
       $info['dependencies'][] = 'php';
     }
   }
-  elseif (variable_get('dependency_test', FALSE) == 'version dependency') {
-    if ($file->name == 'forum') {
+  elseif (variable_get('dependency_test', FALSE) === 'version dependency') {
+    if ($file->name === 'forum') {
       // Make the forum module depend on poll.
       $info['dependencies'][] = 'poll';
     }
-    elseif ($file->name == 'poll') {
+    elseif ($file->name === 'poll') {
       // Make poll depend on a specific version of php module.
       $info['dependencies'][] = 'php (1.x)';
     }
-    elseif ($file->name == 'php') {
+    elseif ($file->name === 'php') {
       // Set php module to a version compatible with the above.
       $info['version'] = '8.x-1.0';
     }
   }
-  if ($file->name == 'seven' && $type == 'theme') {
+  if ($file->name === 'seven' && $type === 'theme') {
     $info['regions']['test_region'] = t('Test region');
   }
 }
diff --git a/core/modules/system/tests/modules/requirements1_test/requirements1_test.install b/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
index 651d911..62ee495 100644
--- a/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
+++ b/core/modules/system/tests/modules/requirements1_test/requirements1_test.install
@@ -9,7 +9,7 @@ function requirements1_test_requirements($phase) {
   $t = get_t();
 
   // Always fails requirements.
-  if ('install' == $phase) {
+  if ('install' === $phase) {
     $requirements['requirements1_test'] = array(
       'title' => $t('Requirements 1 Test'),
       'severity' => REQUIREMENT_ERROR,
diff --git a/core/modules/system/tests/modules/session_test/session_test.module b/core/modules/system/tests/modules/session_test/session_test.module
index 689ff09..9ce4ae0 100644
--- a/core/modules/system/tests/modules/session_test/session_test.module
+++ b/core/modules/system/tests/modules/session_test/session_test.module
@@ -154,7 +154,7 @@ function _session_test_set_not_started() {
  * Implements hook_user().
  */
 function session_test_user_login($edit = array(), $user = NULL) {
-  if ($user->name == 'session_test_user') {
+  if ($user->name === 'session_test_user') {
     // Exit so we can verify that the session was regenerated
     // before hook_user() was called.
     exit;
diff --git a/core/modules/system/tests/modules/system_test/system_test.module b/core/modules/system/tests/modules/system_test/system_test.module
index e6d1f35..66821cb 100644
--- a/core/modules/system/tests/modules/system_test/system_test.module
+++ b/core/modules/system/tests/modules/system_test/system_test.module
@@ -248,20 +248,20 @@ function system_test_system_info_alter(&$info, $file, $type) {
   // We need a static otherwise the last test will fail to alter common_test.
   static $test;
   if (($dependencies = variable_get('dependencies', array())) || $test) {
-    if ($file->name == 'module_test') {
+    if ($file->name === 'module_test') {
       $info['hidden'] = FALSE;
       $info['dependencies'][] = array_shift($dependencies);
       variable_set('dependencies', $dependencies);
       $test = TRUE;
     }
-    if ($file->name == 'common_test') {
+    if ($file->name === 'common_test') {
       $info['hidden'] = FALSE;
       $info['version'] = '8.x-2.4-beta3';
     }
   }
 
   // Make the system_dependencies_test visible by default.
-  if ($file->name == 'system_dependencies_test') {
+  if ($file->name === 'system_dependencies_test') {
     $info['hidden'] = FALSE;
   }
   if (in_array($file->name, array(
@@ -272,7 +272,7 @@ function system_test_system_info_alter(&$info, $file, $type) {
   ))) {
     $info['hidden'] = FALSE;
   }
-  if ($file->name == 'requirements1_test' || $file->name == 'requirements2_test') {
+  if ($file->name === 'requirements1_test' || $file->name === 'requirements2_test') {
     $info['hidden'] = FALSE;
   }
 }
@@ -311,15 +311,15 @@ function system_test_page_build(&$page) {
   $menu_item = menu_get_item();
   $main_content_display = &drupal_static('system_main_content_added', FALSE);
 
-  if ($menu_item['path'] == 'system-test/main-content-handling') {
+  if ($menu_item['path'] === 'system-test/main-content-handling') {
     $page['footer'] = drupal_set_page_content();
     $page['footer']['main']['#markup'] = '<div id="system-test-content">' . $page['footer']['main']['#markup'] . '</div>';
   }
-  elseif ($menu_item['path'] == 'system-test/main-content-fallback') {
+  elseif ($menu_item['path'] === 'system-test/main-content-fallback') {
     drupal_set_page_content();
     $main_content_display = FALSE;
   }
-  elseif ($menu_item['path'] == 'system-test/main-content-duplication') {
+  elseif ($menu_item['path'] === 'system-test/main-content-duplication') {
     drupal_set_page_content();
   }
 }
diff --git a/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module b/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module
index 72fb29d..ee12913 100644
--- a/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module
+++ b/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module
@@ -58,7 +58,7 @@ function taxonomy_test_taxonomy_term_delete(TaxonomyTerm $term) {
  * Implements hook_form_alter().
  */
 function taxonomy_test_form_alter(&$form, $form_state, $form_id) {
-  if ($form_id == 'taxonomy_form_term') {
+  if ($form_id === 'taxonomy_form_term') {
     $antonym = taxonomy_test_get_antonym($form['#term']['tid']);
     $form['advanced']['antonym'] = array(
       '#type' => 'textfield',
diff --git a/core/modules/system/tests/modules/theme_test/theme_test.module b/core/modules/system/tests/modules/theme_test/theme_test.module
index f2cd4a0..5586215 100644
--- a/core/modules/system/tests/modules/theme_test/theme_test.module
+++ b/core/modules/system/tests/modules/theme_test/theme_test.module
@@ -62,7 +62,7 @@ function theme_test_menu() {
  * Implements hook_init().
  */
 function theme_test_init() {
-  if (arg(0) == 'theme-test' && arg(1) == 'hook-init') {
+  if (arg(0) === 'theme-test' && arg(1) === 'hook-init') {
     // First, force the theme registry to be rebuilt on this page request. This
     // allows us to test a full initialization of the theme system in the code
     // below.
@@ -79,7 +79,7 @@ function theme_test_init() {
  * Implements hook_exit().
  */
 function theme_test_exit() {
-  if (arg(0) == 'user') {
+  if (arg(0) === 'user') {
     // Register a fake registry loading callback. If it gets called by
     // theme_get_registry(), the registry has not been initialized yet.
     _theme_registry_callback('_theme_test_load_registry', array());
diff --git a/core/modules/system/tests/modules/update_script_test/update_script_test.install b/core/modules/system/tests/modules/update_script_test/update_script_test.install
index 8af516b..b9c5a14 100644
--- a/core/modules/system/tests/modules/update_script_test/update_script_test.install
+++ b/core/modules/system/tests/modules/update_script_test/update_script_test.install
@@ -11,7 +11,7 @@
 function update_script_test_requirements($phase) {
   $requirements = array();
 
-  if ($phase == 'update') {
+  if ($phase === 'update') {
     // Set a requirements warning or error when the test requests it.
     $requirement_type = variable_get('update_script_test_requirement_type');
     switch ($requirement_type) {
diff --git a/core/modules/system/tests/modules/url_alter_test/url_alter_test.module b/core/modules/system/tests/modules/url_alter_test/url_alter_test.module
index 9287ff5..c585166 100644
--- a/core/modules/system/tests/modules/url_alter_test/url_alter_test.module
+++ b/core/modules/system/tests/modules/url_alter_test/url_alter_test.module
@@ -43,11 +43,11 @@ function url_alter_test_url_inbound_alter(&$path, $original_path, $path_language
   }
 
   // Rewrite community/ to forum/.
-  if ($path == 'community' || strpos($path, 'community/') === 0) {
+  if ($path === 'community' || strpos($path, 'community/') === 0) {
     $path = 'forum' . substr($path, 9);
   }
 
-  if ($path == 'url-alter-test/bar') {
+  if ($path === 'url-alter-test/bar') {
     $path = 'url-alter-test/foo';
   }
 }
@@ -65,7 +65,7 @@ function url_alter_test_url_outbound_alter(&$path, &$options, $original_path) {
   }
 
   // Rewrite forum/ to community/.
-  if ($path == 'forum' || strpos($path, 'forum/') === 0) {
+  if ($path === 'forum' || strpos($path, 'forum/') === 0) {
     $path = 'community' . substr($path, 5);
   }
 }
diff --git a/core/modules/system/tests/modules/xmlrpc_test/xmlrpc_test.module b/core/modules/system/tests/modules/xmlrpc_test/xmlrpc_test.module
index db8f113..71909a1 100644
--- a/core/modules/system/tests/modules/xmlrpc_test/xmlrpc_test.module
+++ b/core/modules/system/tests/modules/xmlrpc_test/xmlrpc_test.module
@@ -74,7 +74,7 @@ function xmlrpc_test_xmlrpc_alter(&$services) {
       if (!is_array($value)) {
         continue;
       }
-      if ($value[0] == 'system.methodSignature') {
+      if ($value[0] === 'system.methodSignature') {
         $remove = $key;
         break;
       }
diff --git a/core/modules/system/tests/pager.test b/core/modules/system/tests/pager.test
index 6fdeec5..b80d9df 100644
--- a/core/modules/system/tests/pager.test
+++ b/core/modules/system/tests/pager.test
@@ -84,7 +84,7 @@ class PagerFunctionalWebTestCase extends DrupalWebTestCase {
     foreach ($elements as $page => $element) {
       // Make item/page index 1-based.
       $page++;
-      if ($current_page == $page) {
+      if ($current_page === $page) {
         $this->assertClass($element, 'pager-current', 'Item for current page has .pager-current class.');
         $this->assertFalse(isset($element->a), 'Item for current page has no link.');
       }
diff --git a/core/modules/system/tests/registry.test b/core/modules/system/tests/registry.test
index bcd8d4e..251fb21 100644
--- a/core/modules/system/tests/registry.test
+++ b/core/modules/system/tests/registry.test
@@ -24,7 +24,7 @@ class RegistryParseFileTestCase extends DrupalWebTestCase {
     _registry_parse_file($this->fileName, $this->getFileContents());
     foreach (array('className', 'interfaceName') as $resource) {
       $foundName = db_query('SELECT name FROM {registry} WHERE name = :name', array(':name' => $this->$resource))->fetchField();
-      $this->assertTrue($this->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$resource)));
+      $this->assertTrue($this->$resource === $foundName, t('Resource "@resource" found.', array('@resource' => $this->$resource)));
     }
   }
 
@@ -69,7 +69,7 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase {
       $this->$fileType->contents = $this->getFileContents($fileType);
       file_save_data($this->$fileType->contents, $this->$fileType->fileName);
 
-      if ($fileType == 'existing_changed') {
+      if ($fileType === 'existing_changed') {
         // Add a record with an incorrect hash.
         $this->$fileType->fakeHash = hash('sha256', mt_rand());
         db_insert('registry_file')
@@ -102,11 +102,11 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase {
       // Test that we have all the right resources.
       foreach (array('className', 'interfaceName') as $resource) {
         $foundName = db_query('SELECT name FROM {registry} WHERE name = :name', array(':name' => $this->$fileType->$resource))->fetchField();
-        $this->assertTrue($this->$fileType->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource)));
+        $this->assertTrue($this->$fileType->$resource === $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource)));
       }
       // Test that we have the right hash.
       $hash = db_query('SELECT hash FROM {registry_file} WHERE filename = :filename', array(':filename' => $this->$fileType->fileName))->fetchField();
-      $this->assertTrue(hash('sha256', $this->$fileType->contents) == $hash, t('sha-256 for "@filename" matched.' . $fileType . $hash, array('@filename' => $this->$fileType->fileName)));
+      $this->assertTrue(hash('sha256', $this->$fileType->contents) === $hash, t('sha-256 for "@filename" matched.' . $fileType . $hash, array('@filename' => $this->$fileType->fileName)));
     }
   }
 
@@ -117,7 +117,7 @@ class RegistryParseFilesTestCase extends DrupalWebTestCase {
     $files = array();
     foreach ($this->fileTypes as $fileType) {
       $files[$this->$fileType->fileName] = array('module' => '', 'weight' => 0);
-      if ($fileType == 'existing_changed') {
+      if ($fileType === 'existing_changed') {
         $files[$this->$fileType->fileName]['hash'] = $this->$fileType->fakeHash;
       }
     }
diff --git a/core/modules/system/tests/schema.test b/core/modules/system/tests/schema.test
index 5a10567..3d2cc74 100644
--- a/core/modules/system/tests/schema.test
+++ b/core/modules/system/tests/schema.test
@@ -185,7 +185,7 @@ class SchemaTestCase extends DrupalWebTestCase {
     $types = array('int', 'float', 'numeric');
     foreach ($types as $type) {
       $column_spec = array('type' => $type, 'unsigned'=> TRUE);
-      if ($type == 'numeric') {
+      if ($type === 'numeric') {
         $column_spec += array('precision' => 10, 'scale' => 0);
       }
       $column_name = $type . '_column';
diff --git a/core/modules/system/tests/session.test b/core/modules/system/tests/session.test
index 017a8ba..739c1e9 100644
--- a/core/modules/system/tests/session.test
+++ b/core/modules/system/tests/session.test
@@ -446,7 +446,7 @@ class SessionHttpsTestCase extends DrupalWebTestCase {
         $this->curlClose();
 
         $this->drupalGet($url, array(), array('Cookie: ' . $cookie));
-        if ($cookie_key == $url_key) {
+        if ($cookie_key === $url_key) {
           $this->assertText(t('Configuration'));
           $this->assertResponse(200);
         }
diff --git a/core/modules/system/tests/theme.test b/core/modules/system/tests/theme.test
index 978887c..57da8b7 100644
--- a/core/modules/system/tests/theme.test
+++ b/core/modules/system/tests/theme.test
@@ -578,9 +578,9 @@ class ThemeHtmlTplPhpAttributesTestCase extends DrupalWebTestCase {
   function testThemeHtmlTplPhpAttributes() {
     $this->drupalGet('');
     $attributes = $this->xpath('/html[@theme_test_html_attribute="theme test html attribute value"]');
-    $this->assertTrue(count($attributes) == 1, t('Attribute set in the html element via hook_preprocess_html() found.'));
+    $this->assertTrue(count($attributes) === 1, t('Attribute set in the html element via hook_preprocess_html() found.'));
     $attributes = $this->xpath('/html/body[@theme_test_body_attribute="theme test body attribute value"]');
-    $this->assertTrue(count($attributes) == 1, t('Attribute set in the body element via hook_preprocess_html() found.'));
+    $this->assertTrue(count($attributes) === 1, t('Attribute set in the body element via hook_preprocess_html() found.'));
   }
 }
 
diff --git a/core/modules/system/tests/unicode.test b/core/modules/system/tests/unicode.test
index c50a437..c2419fa 100644
--- a/core/modules/system/tests/unicode.test
+++ b/core/modules/system/tests/unicode.test
@@ -33,7 +33,7 @@ class UnicodeUnitTest extends DrupalUnitTestCase {
 
     // mbstring was not detected on this installation, there is no way to test
     // multibyte features. Treat that as an exception.
-    if ($multibyte == UNICODE_SINGLEBYTE) {
+    if ($multibyte === UNICODE_SINGLEBYTE) {
       $this->error(t('Unable to test Multibyte features: mbstring extension was not detected.'));
     }
 
diff --git a/core/modules/system/tests/update.test b/core/modules/system/tests/update.test
index abbab47..bf875c0 100644
--- a/core/modules/system/tests/update.test
+++ b/core/modules/system/tests/update.test
@@ -107,9 +107,9 @@ class UpdateDependencyHookInvocationTestCase extends DrupalWebTestCase {
    */
   function testHookUpdateDependencies() {
     $update_dependencies = update_retrieve_dependencies();
-    $this->assertTrue($update_dependencies['system'][8000]['update_test_1'] == 8000, t('An update function that has a dependency on two separate modules has the first dependency recorded correctly.'));
-    $this->assertTrue($update_dependencies['system'][8000]['update_test_2'] == 8001, t('An update function that has a dependency on two separate modules has the second dependency recorded correctly.'));
-    $this->assertTrue($update_dependencies['system'][8001]['update_test_1'] == 8002, t('An update function that depends on more than one update from the same module only has the dependency on the higher-numbered update function recorded.'));
+    $this->assertTrue($update_dependencies['system'][8000]['update_test_1'] === 8000, t('An update function that has a dependency on two separate modules has the first dependency recorded correctly.'));
+    $this->assertTrue($update_dependencies['system'][8000]['update_test_2'] === 8001, t('An update function that has a dependency on two separate modules has the second dependency recorded correctly.'));
+    $this->assertTrue($update_dependencies['system'][8001]['update_test_1'] === 8002, t('An update function that depends on more than one update from the same module only has the dependency on the higher-numbered update function recorded.'));
   }
 }
 
diff --git a/core/modules/system/tests/upgrade/upgrade.language.test b/core/modules/system/tests/upgrade/upgrade.language.test
index e473c63..ad34d10 100644
--- a/core/modules/system/tests/upgrade/upgrade.language.test
+++ b/core/modules/system/tests/upgrade/upgrade.language.test
@@ -36,10 +36,10 @@ class LanguageUpgradePathTestCase extends UpgradePathTestCase {
     $this->assertTrue($this->performUpgrade(), t('The upgrade was completed successfully.'));
 
     // Ensure Catalan was properly upgraded to be the new default language.
-    $this->assertTrue(language_default()->langcode == 'ca', t('Catalan is the default language'));
+    $this->assertTrue(language_default()->langcode === 'ca', t('Catalan is the default language'));
     $languages = language_list();
     foreach ($languages as $language) {
-      $this->assertTrue($language->default == ($language->langcode == 'ca'), t('@language default property properly set', array('@language' => $language->name)));
+      $this->assertTrue($language->default === ($language->langcode === 'ca'), t('@language default property properly set', array('@language' => $language->name)));
     }
 
     // Check that both comments display on the node.
@@ -50,7 +50,7 @@ class LanguageUpgradePathTestCase extends UpgradePathTestCase {
 
     // Directly check the comment language property on the first comment.
     $comment = db_query('SELECT * FROM {comment} WHERE cid = :cid', array(':cid' => 1))->fetchObject();
-    $this->assertTrue($comment->langcode == 'und', t('Comment 1 language code found.'));
+    $this->assertTrue($comment->langcode === 'und', t('Comment 1 language code found.'));
 
     // Ensure that the language switcher has been correctly upgraded. We need to
     // assert the expected HTML id because the block might appear even if the
@@ -109,7 +109,7 @@ class LanguageUpgradePathTestCase extends UpgradePathTestCase {
     // Check that locale_language_providers_weight_language is correctly
     // renamed.
     $current_weights = variable_get('language_negotiation_methods_weight_language_interface', array());
-    $this->assertTrue(serialize($expected_weights) == serialize($current_weights), t('Language negotiation method weights upgraded.'));
+    $this->assertTrue(serialize($expected_weights) === serialize($current_weights), t('Language negotiation method weights upgraded.'));
 
     // Look up migrated plural string.
     $source_string = db_query('SELECT * FROM {locales_source} WHERE lid = 22')->fetchObject();
@@ -141,7 +141,7 @@ class LanguageUpgradePathTestCase extends UpgradePathTestCase {
 
     language_negotiation_include();
     $domains = language_negotiation_url_domains();
-    $this->assertTrue($domains['ca'] == $language_domain, t('Language domain for Catalan properly upgraded.'));
+    $this->assertTrue($domains['ca'] === $language_domain, t('Language domain for Catalan properly upgraded.'));
   }
 
   /**
diff --git a/core/modules/system/tests/upgrade/upgrade.test b/core/modules/system/tests/upgrade/upgrade.test
index e4045be..b7bcc46 100644
--- a/core/modules/system/tests/upgrade/upgrade.test
+++ b/core/modules/system/tests/upgrade/upgrade.test
@@ -108,7 +108,7 @@ abstract class UpgradePathTestCase extends DrupalWebTestCase {
     // Load the database from the portable PHP dump.
     // The files can be gzipped.
     foreach ($this->databaseDumpFiles as $file) {
-      if (substr($file, -3) == '.gz') {
+      if (substr($file, -3) === '.gz') {
         $file = "compress.zlib://$file";
       }
       require $file;
diff --git a/core/modules/system/tests/xmlrpc.test b/core/modules/system/tests/xmlrpc.test
index 60b9624..5fe2253 100644
--- a/core/modules/system/tests/xmlrpc.test
+++ b/core/modules/system/tests/xmlrpc.test
@@ -132,7 +132,7 @@ class XMLRPCValidator1IncTestCase extends DrupalWebTestCase {
     $this->assertIdentical($l_res_4, $r_res_4);
 
     $int_5     = mt_rand(-100, 100);
-    $bool_5    = (($int_5 % 2) == 0);
+    $bool_5    = (($int_5 % 2) === 0);
     $string_5  = $this->randomName();
     $double_5  = (double)(mt_rand(-1000, 1000) / 100);
     $time_5    = REQUEST_TIME;
diff --git a/core/modules/taxonomy/taxonomy.admin.inc b/core/modules/taxonomy/taxonomy.admin.inc
index a95b856..259329b 100644
--- a/core/modules/taxonomy/taxonomy.admin.inc
+++ b/core/modules/taxonomy/taxonomy.admin.inc
@@ -204,7 +204,7 @@ function taxonomy_form_vocabulary_validate($form, &$form_state) {
  * @see taxonomy_form_vocabulary_validate()
  */
 function taxonomy_form_vocabulary_submit($form, &$form_state) {
-  if ($form_state['triggering_element']['#value'] == t('Delete')) {
+  if ($form_state['triggering_element']['#value'] === t('Delete')) {
     // Rebuild the form to confirm vocabulary deletion.
     $form_state['rebuild'] = TRUE;
     $form_state['confirm_delete'] = TRUE;
@@ -303,7 +303,7 @@ function taxonomy_overview_terms($form, &$form_state, TaxonomyVocabulary $vocabu
       while ($pterm = prev($tree)) {
         $before_entries--;
         $back_step++;
-        if ($pterm->depth == 0) {
+        if ($pterm->depth === 0) {
           prev($tree);
           continue 2; // Jump back to the start of the root level parent.
        }
@@ -312,7 +312,7 @@ function taxonomy_overview_terms($form, &$form_state, TaxonomyVocabulary $vocabu
     $back_step = isset($back_step) ? $back_step : 0;
 
     // Continue rendering the tree until we reach the a new root item.
-    if ($page_entries >= $page_increment + $back_step + 1 && $term->depth == 0 && $root_entries > 1) {
+    if ($page_entries >= $page_increment + $back_step + 1 && $term->depth === 0 && $root_entries > 1) {
       $complete_tree = TRUE;
       // This new item at the root level is the first item on the next page.
       $after_entries++;
@@ -328,11 +328,11 @@ function taxonomy_overview_terms($form, &$form_state, TaxonomyVocabulary $vocabu
     $key = 'tid:' . $term->tid . ':' . $term_deltas[$term->tid];
 
     // Keep track of the first term displayed on this page.
-    if ($page_entries == 1) {
+    if ($page_entries === 1) {
       $form['#first_tid'] = $term->tid;
     }
     // Keep a variable to make sure at least 2 root elements are displayed.
-    if ($term->parents[0] == 0) {
+    if ($term->parents[0] === 0) {
       $root_entries++;
     }
     $current_page[$key] = $term;
@@ -444,7 +444,7 @@ function taxonomy_overview_terms($form, &$form_state, TaxonomyVocabulary $vocabu
  * @see taxonomy_overview_terms()
  */
 function taxonomy_overview_terms_submit($form, &$form_state) {
-  if ($form_state['triggering_element']['#value'] == t('Reset to alphabetical')) {
+  if ($form_state['triggering_element']['#value'] === t('Reset to alphabetical')) {
     // Execute the reset action.
     if ($form_state['values']['reset_alphabetical'] === TRUE) {
       return taxonomy_vocabulary_confirm_reset_alphabetical_submit($form, $form_state);
@@ -473,7 +473,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) {
   $weight = 0;
   $term = (array) $tree[0];
   while ($term['tid'] != $form['#first_tid']) {
-    if ($term['parents'][0] == 0 && $term['weight'] != $weight) {
+    if ($term['parents'][0] === 0 && $term['weight'] != $weight) {
       $term['parent'] = $term['parents'][0];
       $term['weight'] = $weight;
       $changed_terms[$term['tid']] = $term;
@@ -489,7 +489,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) {
     if (isset($form[$tid]['#term'])) {
       $term = $form[$tid]['#term'];
       // Give terms at the root level a weight in sequence with terms on previous pages.
-      if ($values['parent'] == 0 && $term['weight'] != $weight) {
+      if ($values['parent'] === 0 && $term['weight'] != $weight) {
         $term['weight'] = $weight;
         $changed_terms[$term['tid']] = $term;
       }
@@ -514,7 +514,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) {
   // Build a list of all terms that need to be updated on following pages.
   for ($weight; $weight < count($tree); $weight++) {
     $term = (array) $tree[$weight];
-    if ($term['parents'][0] == 0 && $term['weight'] != $weight) {
+    if ($term['parents'][0] === 0 && $term['weight'] != $weight) {
       $term['parent'] = $term['parents'][0];
       $term['weight'] = $weight;
       $changed_terms[$term['tid']] = $term;
@@ -610,10 +610,10 @@ function theme_taxonomy_overview_terms($variables) {
     }
 
     if ($row_position !== 0 && $row_position !== count($rows) - 1) {
-      if ($row_position == $back_step - 1 || $row_position == $page_entries - $forward_step - 1) {
+      if ($row_position === $back_step - 1 || $row_position === $page_entries - $forward_step - 1) {
         $rows[$key]['class'][] = 'taxonomy-term-divider-top';
       }
-      elseif ($row_position == $back_step || $row_position == $page_entries - $forward_step) {
+      elseif ($row_position === $back_step || $row_position === $page_entries - $forward_step) {
         $rows[$key]['class'][] = 'taxonomy-term-divider-bottom';
       }
     }
@@ -829,7 +829,7 @@ function taxonomy_form_term_submit($form, &$form_state) {
   $current_parent_count = count($form_state['values']['parent']);
   $previous_parent_count = count($form['#term']['parent']);
   // Root doesn't count if it's the only parent.
-  if ($current_parent_count == 1 && isset($form_state['values']['parent'][0])) {
+  if ($current_parent_count === 1 && isset($form_state['values']['parent'][0])) {
     $current_parent_count = 0;
     $form_state['values']['parent'] = array();
   }
@@ -842,7 +842,7 @@ function taxonomy_form_term_submit($form, &$form_state) {
   // If we've increased the number of parents and this is a single or flat
   // hierarchy, update the vocabulary immediately.
   elseif ($current_parent_count > $previous_parent_count && $form['#vocabulary']->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE) {
-    $form['#vocabulary']->hierarchy = $current_parent_count == 1 ? TAXONOMY_HIERARCHY_SINGLE : TAXONOMY_HIERARCHY_MULTIPLE;
+    $form['#vocabulary']->hierarchy = $current_parent_count === 1 ? TAXONOMY_HIERARCHY_SINGLE : TAXONOMY_HIERARCHY_MULTIPLE;
     taxonomy_vocabulary_save($form['#vocabulary']);
   }
 
diff --git a/core/modules/taxonomy/taxonomy.api.php b/core/modules/taxonomy/taxonomy.api.php
index 84fdfc7..b4b9e1a 100644
--- a/core/modules/taxonomy/taxonomy.api.php
+++ b/core/modules/taxonomy/taxonomy.api.php
@@ -241,7 +241,7 @@ function hook_taxonomy_term_delete(TaxonomyTerm $term) {
  * @see hook_entity_view_alter()
  */
 function hook_taxonomy_term_view_alter(&$build) {
-  if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
+  if ($build['#view_mode'] === 'full' && isset($build['an_additional_field'])) {
     // Change its weight.
     $build['an_additional_field']['#weight'] = -10;
   }
diff --git a/core/modules/taxonomy/taxonomy.entity.inc b/core/modules/taxonomy/taxonomy.entity.inc
index 3562580..543c3ea 100644
--- a/core/modules/taxonomy/taxonomy.entity.inc
+++ b/core/modules/taxonomy/taxonomy.entity.inc
@@ -131,7 +131,7 @@ class TaxonomyTermController extends EntityDatabaseStorageController {
     if (isset($conditions['name'])) {
       $query_conditions = &$query->conditions();
       foreach ($query_conditions as $key => $condition) {
-        if ($condition['field'] == 'base.name') {
+        if ($condition['field'] === 'base.name') {
           $query_conditions[$key]['operator'] = 'LIKE';
           $query_conditions[$key]['value'] = db_like($query_conditions[$key]['value']);
         }
@@ -336,7 +336,7 @@ class TaxonomyVocabularyController extends EntityDatabaseStorageController {
       // vocabulary.
       foreach ($taxonomy_field['settings']['allowed_values'] as $key => $allowed_value) {
         foreach ($entities as $vocabulary) {
-          if ($allowed_value['vocabulary'] == $vocabulary->machine_name) {
+          if ($allowed_value['vocabulary'] === $vocabulary->machine_name) {
             unset($taxonomy_field['settings']['allowed_values'][$key]);
             $modified_field = TRUE;
           }
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index 719817b..2a1068e 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -469,9 +469,9 @@ function taxonomy_taxonomy_vocabulary_update(TaxonomyVocabulary $vocabulary) {
     $fields = field_read_fields();
     foreach ($fields as $field_name => $field) {
       $update = FALSE;
-      if ($field['type'] == 'taxonomy_term_reference') {
+      if ($field['type'] === 'taxonomy_term_reference') {
         foreach ($field['settings']['allowed_values'] as $key => &$value) {
-          if ($value['vocabulary'] == $vocabulary->original->machine_name) {
+          if ($value['vocabulary'] === $vocabulary->original->machine_name) {
             $value['vocabulary'] = $vocabulary->machine_name;
             $update = TRUE;
           }
@@ -508,7 +508,7 @@ function taxonomy_check_vocabulary_hierarchy(TaxonomyVocabulary $vocabulary, $ch
   $hierarchy = TAXONOMY_HIERARCHY_DISABLED;
   foreach ($tree as $term) {
     // Update the changed term with the new parent value before comparison.
-    if ($term->tid == $changed_term['tid']) {
+    if ($term->tid === $changed_term['tid']) {
       $term = (object) $changed_term;
       $term->parents = $term->parent;
     }
@@ -517,7 +517,7 @@ function taxonomy_check_vocabulary_hierarchy(TaxonomyVocabulary $vocabulary, $ch
       $hierarchy = TAXONOMY_HIERARCHY_MULTIPLE;
       break;
     }
-    elseif (count($term->parents) == 1 && 0 !== array_shift($term->parents)) {
+    elseif (count($term->parents) === 1 && 0 !== array_shift($term->parents)) {
       $hierarchy = TAXONOMY_HIERARCHY_SINGLE;
     }
   }
@@ -625,7 +625,7 @@ function template_preprocess_taxonomy_term(&$variables) {
   $uri = entity_uri('taxonomy_term', $term);
   $variables['term_url']  = url($uri['path'], $uri['options']);
   $variables['term_name'] = check_plain($term->name);
-  $variables['page']      = $variables['view_mode'] == 'full' && taxonomy_term_is_page($term);
+  $variables['page']      = $variables['view_mode'] === 'full' && taxonomy_term_is_page($term);
 
   // Flatten the term object's member fields.
   $variables = array_merge((array) $term, $variables);
@@ -658,7 +658,7 @@ function template_preprocess_taxonomy_term(&$variables) {
  */
 function taxonomy_term_is_page(TaxonomyTerm $term) {
   $page_term = menu_get_object('taxonomy_term', 2);
-  return (!empty($page_term) ? $page_term->tid == $term->tid : FALSE);
+  return (!empty($page_term) ? $page_term->tid === $term->tid : FALSE);
 }
 
 /**
@@ -1048,7 +1048,7 @@ function taxonomy_implode_tags($tags, $vid = NULL) {
   $typed_tags = array();
   foreach ($tags as $tag) {
     // Extract terms belonging to the vocabulary in question.
-    if (!isset($vid) || $tag->vid == $vid) {
+    if (!isset($vid) || $tag->vid === $vid) {
       // Make sure we have a completed loaded taxonomy term.
       if (isset($tag->name)) {
         // Commas and quotes in tag names are special cases, so encode 'em.
@@ -1160,7 +1160,7 @@ function taxonomy_field_validate($entity_type, $entity, $field, $instance, $lang
         foreach ($field['settings']['allowed_values'] as $settings) {
           // If no parent is specified, check if the term is in the vocabulary.
           if (isset($settings['vocabulary']) && empty($settings['parent'])) {
-            if ($settings['vocabulary'] == $terms[$item['tid']]->vocabulary_machine_name) {
+            if ($settings['vocabulary'] === $terms[$item['tid']]->vocabulary_machine_name) {
               $validate = TRUE;
               break;
             }
@@ -1170,7 +1170,7 @@ function taxonomy_field_validate($entity_type, $entity, $field, $instance, $lang
           elseif (!empty($settings['parent'])) {
             $ancestors = taxonomy_term_load_parents_all($item['tid']);
             foreach ($ancestors as $ancestor) {
-              if ($ancestor->tid == $settings['parent']) {
+              if ($ancestor->tid === $settings['parent']) {
                 $validate = TRUE;
                 break 2;
               }
@@ -1231,7 +1231,7 @@ function taxonomy_field_formatter_view($entity_type, $entity, $field, $instance,
   switch ($display['type']) {
     case 'taxonomy_term_reference_link':
       foreach ($items as $delta => $item) {
-        if ($item['tid'] == 'autocreate') {
+        if ($item['tid'] === 'autocreate') {
           $element[$delta] = array(
             '#markup' => check_plain($item['name']),
           );
@@ -1328,7 +1328,7 @@ function taxonomy_field_formatter_prepare_view($entity_type, $entities, $field,
           $items[$id][$delta]['taxonomy_term'] = $terms[$item['tid']];
         }
         // Terms to be created are not in $terms, but are still legitimate.
-        else if ($item['tid'] == 'autocreate') {
+        else if ($item['tid'] === 'autocreate') {
           // Leave the item in place.
         }
         // Otherwise, unset the instance value, since the term does not exist.
@@ -1530,7 +1530,7 @@ function taxonomy_rdf_mapping() {
  */
 function taxonomy_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
   foreach ($items as $delta => $item) {
-    if ($item['tid'] == 'autocreate') {
+    if ($item['tid'] === 'autocreate') {
       unset($item['tid']);
       $term = entity_create('taxonomy_term', $item);
       $term->langcode = $langcode;
@@ -1580,7 +1580,7 @@ function taxonomy_build_node_index($node) {
     foreach (field_info_instances('node', $node->type) as $instance) {
       $field_name = $instance['field_name'];
       $field = field_info_field($field_name);
-      if ($field['module'] == 'taxonomy' && $field['storage']['type'] == 'field_sql_storage') {
+      if ($field['module'] === 'taxonomy' && $field['storage']['type'] === 'field_sql_storage') {
         // If a field value is not set in the node object when node_save() is
         // called, the old value from $node->original is used.
         if (isset($node->{$field_name})) {
diff --git a/core/modules/taxonomy/taxonomy.test b/core/modules/taxonomy/taxonomy.test
index 65d6805..5942067 100644
--- a/core/modules/taxonomy/taxonomy.test
+++ b/core/modules/taxonomy/taxonomy.test
@@ -232,7 +232,7 @@ class TaxonomyVocabularyUnitTest extends TaxonomyWebTestCase {
     // This should return a vocabulary object since it now matches a real vid.
     $vocabulary = taxonomy_vocabulary_load($vid);
     $this->assertTrue(!empty($vocabulary) && is_object($vocabulary), t('Vocabulary is an object'));
-    $this->assertTrue($vocabulary->vid == $vid, t('Valid vocabulary vid is the same as our previously invalid one.'));
+    $this->assertTrue($vocabulary->vid === $vid, t('Valid vocabulary vid is the same as our previously invalid one.'));
   }
 
   /**
@@ -336,10 +336,10 @@ class TaxonomyVocabularyUnitTest extends TaxonomyWebTestCase {
 
     // Fetch vocabulary 1 by name.
     $vocabulary = current(taxonomy_vocabulary_load_multiple(array(), array('name' => $vocabulary1->name)));
-    $this->assertTrue($vocabulary->vid == $vocabulary1->vid, t('Vocabulary loaded successfully by name.'));
+    $this->assertTrue($vocabulary->vid === $vocabulary1->vid, t('Vocabulary loaded successfully by name.'));
 
     // Fetch vocabulary 1 by name and ID.
-    $this->assertTrue(current(taxonomy_vocabulary_load_multiple(array($vocabulary1->vid), array('name' => $vocabulary1->name)))->vid == $vocabulary1->vid, t('Vocabulary loaded successfully by name and ID.'));
+    $this->assertTrue(current(taxonomy_vocabulary_load_multiple(array($vocabulary1->vid), array('name' => $vocabulary1->name)))->vid === $vocabulary1->vid, t('Vocabulary loaded successfully by name and ID.'));
   }
 
   /**
@@ -1352,11 +1352,11 @@ class TaxonomyLoadMultipleUnitTest extends TaxonomyWebTestCase {
     // Load the terms from the vocabulary.
     $terms = taxonomy_term_load_multiple(NULL, array('vid' => $vocabulary->vid));
     $count = count($terms);
-    $this->assertTrue($count == 5, t('Correct number of terms were loaded. !count terms.', array('!count' => $count)));
+    $this->assertTrue($count === 5, t('Correct number of terms were loaded. !count terms.', array('!count' => $count)));
 
     // Load the same terms again by tid.
     $terms2 = taxonomy_term_load_multiple(array_keys($terms));
-    $this->assertTrue($count == count($terms2), t('Five terms were loaded by tid'));
+    $this->assertTrue($count === count($terms2), t('Five terms were loaded by tid'));
     $this->assertEqual($terms, $terms2, t('Both arrays contain the same terms'));
 
     // Load the terms by tid, with a condition on vid.
@@ -1371,7 +1371,7 @@ class TaxonomyLoadMultipleUnitTest extends TaxonomyWebTestCase {
 
     // Load terms from the vocabulary by vid.
     $terms4 = taxonomy_term_load_multiple(NULL, array('vid' => $vocabulary->vid));
-    $this->assertTrue(count($terms4 == 4), t('Correct number of terms were loaded.'));
+    $this->assertTrue(count($terms4 === 4), t('Correct number of terms were loaded.'));
     $this->assertFalse(isset($terms4[$deleted->tid]));
 
     // Create a single term and load it by name.
@@ -1692,7 +1692,7 @@ class TaxonomyTermFieldMultipleVocabularyTestCase extends TaxonomyWebTestCase {
 
     // Verify that field and instance settings are correct.
     $field_info = field_info_field($this->field_name);
-    $this->assertTrue(sizeof($field_info['settings']['allowed_values']) == 1, 'Only one vocabulary is allowed for the field.');
+    $this->assertTrue(sizeof($field_info['settings']['allowed_values']) === 1, 'Only one vocabulary is allowed for the field.');
 
     // The widget should still be displayed.
     $this->drupalGet('test-entity/add/test-bundle');
diff --git a/core/modules/taxonomy/taxonomy.tokens.inc b/core/modules/taxonomy/taxonomy.tokens.inc
index 24d7bc8..2acd9ef 100644
--- a/core/modules/taxonomy/taxonomy.tokens.inc
+++ b/core/modules/taxonomy/taxonomy.tokens.inc
@@ -92,7 +92,7 @@ function taxonomy_tokens($type, $tokens, array $data = array(), array $options =
   $replacements = array();
   $sanitize = !empty($options['sanitize']);
 
-  if ($type == 'term' && !empty($data['term'])) {
+  if ($type === 'term' && !empty($data['term'])) {
     $term = $data['term'];
 
     foreach ($tokens as $name => $original) {
@@ -147,7 +147,7 @@ function taxonomy_tokens($type, $tokens, array $data = array(), array $options =
     }
   }
 
-  elseif ($type == 'vocabulary' && !empty($data['vocabulary'])) {
+  elseif ($type === 'vocabulary' && !empty($data['vocabulary'])) {
     $vocabulary = $data['vocabulary'];
 
     foreach ($tokens as $name => $original) {
diff --git a/core/modules/toolbar/toolbar.js b/core/modules/toolbar/toolbar.js
index d345284..644e5f6 100644
--- a/core/modules/toolbar/toolbar.js
+++ b/core/modules/toolbar/toolbar.js
@@ -29,7 +29,7 @@ Drupal.toolbar.init = function() {
   var collapsed = $.cookie('Drupal.toolbar.collapsed');
 
   // Expand or collapse the toolbar based on the cookie value.
-  if (collapsed == 1) {
+  if (collapsed === 1) {
     Drupal.toolbar.collapse();
   }
   else {
diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module
index e2bff73..c6fc3eb 100644
--- a/core/modules/toolbar/toolbar.module
+++ b/core/modules/toolbar/toolbar.module
@@ -174,7 +174,7 @@ function toolbar_preprocess_toolbar(&$variables) {
  * just the core Overlay module.
  */
 function toolbar_system_info_alter(&$info, $file, $type) {
-  if ($type == 'theme') {
+  if ($type === 'theme') {
     $info['overlay_supplemental_regions'][] = 'page_top';
   }
 }
diff --git a/core/modules/tracker/tracker.module b/core/modules/tracker/tracker.module
index a5887f2..b6c8eaf 100644
--- a/core/modules/tracker/tracker.module
+++ b/core/modules/tracker/tracker.module
@@ -166,7 +166,7 @@ function tracker_cron() {
  */
 function _tracker_myrecent_access($account) {
   // This path is only allowed for authenticated users looking at their own content.
-  return $account->uid && ($GLOBALS['user']->uid == $account->uid) && user_access('access content');
+  return $account->uid && ($GLOBALS['user']->uid === $account->uid) && user_access('access content');
 }
 
 /**
@@ -336,7 +336,7 @@ function _tracker_remove($nid, $uid = NULL, $changed = NULL) {
 
   if ($node) {
     // Self-authorship is one reason to keep the user's subscription.
-    $keep_subscription = ($node->uid == $uid);
+    $keep_subscription = ($node->uid === $uid);
 
     // Comments are a second reason to keep the user's subscription.
     if (!$keep_subscription) {
diff --git a/core/modules/tracker/tracker.pages.inc b/core/modules/tracker/tracker.pages.inc
index 30583be..47aa74a 100644
--- a/core/modules/tracker/tracker.pages.inc
+++ b/core/modules/tracker/tracker.pages.inc
@@ -98,7 +98,7 @@ function tracker_page($account = NULL, $set_title = FALSE) {
         // comments present, we cannot infer whether the node itself was
         // modified or a comment was posted, so we use only 'last_activity'.
         $mapping_last_activity = rdf_rdfa_attributes($mapping['last_activity'], $node->last_activity);
-        if ($node->comment_count == 0) {
+        if ($node->comment_count === 0) {
           $mapping_changed = rdf_rdfa_attributes($mapping['changed'], $node->last_activity);
           $mapping_last_activity['property'] = array_merge($mapping_last_activity['property'], $mapping_changed['property']);
         }
diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module
index fa73df5..e94e4f2 100644
--- a/core/modules/translation/translation.module
+++ b/core/modules/translation/translation.module
@@ -190,7 +190,7 @@ function translation_form_node_form_alter(&$form, &$form_state) {
         '#tree' => TRUE,
         '#weight' => 30,
       );
-      if ($node->tnid == $node->nid) {
+      if ($node->tnid === $node->nid) {
         // This is the source node of the translation
         $form['translation']['retranslate'] = array(
           '#type' => 'checkbox',
@@ -297,7 +297,7 @@ function translation_node_prepare($node) {
 
     $language_list = language_list();
     $langcode = $_GET['target'];
-    if (!isset($language_list[$langcode]) || ($source_node->langcode == $langcode)) {
+    if (!isset($language_list[$langcode]) || ($source_node->langcode === $langcode)) {
       // If not supported language, or same language as source node, break.
       return;
     }
@@ -423,7 +423,7 @@ function translation_remove_from_set($node) {
         'tnid' => 0,
         'translate' => 0,
       ));
-    if (db_query('SELECT COUNT(*) FROM {node} WHERE tnid = :tnid', array(':tnid' => $node->tnid))->fetchField() == 1) {
+    if (db_query('SELECT COUNT(*) FROM {node} WHERE tnid = :tnid', array(':tnid' => $node->tnid))->fetchField() === 1) {
       // There is only one node left in the set: remove the set altogether.
       $query
         ->condition('tnid', $node->tnid)
@@ -436,7 +436,7 @@ function translation_remove_from_set($node) {
 
       // If the node being removed was the source of the translation set,
       // we pick a new source - preferably one that is up to date.
-      if ($node->tnid == $node->nid) {
+      if ($node->tnid === $node->nid) {
         $new_tnid = db_query('SELECT nid FROM {node} WHERE tnid = :tnid ORDER BY translate ASC, nid ASC', array(':tnid' => $node->tnid))->fetchField();
         db_update('node')
           ->fields(array('tnid' => $new_tnid))
@@ -488,7 +488,7 @@ function translation_node_get_translations($tnid) {
  *   TRUE if translation is supported, and FALSE if not.
  */
 function translation_supported_type($type) {
-  return variable_get('node_type_language_' . $type, 0) == TRANSLATION_ENABLED;
+  return variable_get('node_type_language_' . $type, 0) === TRANSLATION_ENABLED;
 }
 
 /**
@@ -520,7 +520,7 @@ function translation_path_get_translations($path) {
 function translation_language_switch_links_alter(array &$links, $type, $path) {
   $language_type = variable_get('translation_language_type', LANGUAGE_TYPE_INTERFACE);
 
-  if ($type == $language_type && preg_match("!^node/(\d+)(/.+|)!", $path, $matches)) {
+  if ($type === $language_type && preg_match("!^node/(\d+)(/.+|)!", $path, $matches)) {
     $node = node_load((int) $matches[1]);
 
     if (empty($node->tnid)) {
@@ -528,7 +528,7 @@ function translation_language_switch_links_alter(array &$links, $type, $path) {
       // have translations it might be a language neutral node, in which case we
       // must leave the language switch links unaltered. This is true also for
       // nodes not having translation support enabled.
-      if (empty($node) || $node->langcode == LANGUAGE_NOT_SPECIFIED || !translation_supported_type($node->type)) {
+      if (empty($node) || $node->langcode === LANGUAGE_NOT_SPECIFIED || !translation_supported_type($node->type)) {
         return;
       }
       $translations = array($node->langcode => $node);
diff --git a/core/modules/translation/translation.pages.inc b/core/modules/translation/translation.pages.inc
index 66dfc42..c118c3d 100644
--- a/core/modules/translation/translation.pages.inc
+++ b/core/modules/translation/translation.pages.inc
@@ -51,7 +51,7 @@ function translation_node_overview($node) {
       }
       $status = $translation_node->status ? t('Published') : t('Not published');
       $status .= $translation_node->translate ? ' - <span class="marker">' . t('outdated') . '</span>' : '';
-      if ($translation_node->nid == $tnid) {
+      if ($translation_node->nid === $tnid) {
         $language_name = t('<strong>@language_name</strong> (source)', array('@language_name' => $language_name));
       }
     }
diff --git a/core/modules/translation/translation.test b/core/modules/translation/translation.test
index c0e158c..cd5bdb1 100644
--- a/core/modules/translation/translation.test
+++ b/core/modules/translation/translation.test
@@ -376,7 +376,7 @@ class TranslationTestCase extends DrupalWebTestCase {
     // Check to make sure that translation was successful.
     $translation = $this->drupalGetNodeByTitle($title);
     $this->assertTrue($translation, t('Node found in database.'));
-    $this->assertTrue($translation->tnid == $node->nid, t('Translation set id correctly stored.'));
+    $this->assertTrue($translation->tnid === $node->nid, t('Translation set id correctly stored.'));
 
     return $translation;
   }
@@ -453,7 +453,7 @@ class TranslationTestCase extends DrupalWebTestCase {
       }
 
       $found = $this->findContentByXPath($xpath, array(':type' => $type, ':url' => $url), $translation_language->name);
-      $result = $this->assertTrue($found == $find, $message) && $result;
+      $result = $this->assertTrue($found === $find, $message) && $result;
     }
 
     return $result;
@@ -481,7 +481,7 @@ class TranslationTestCase extends DrupalWebTestCase {
     if ($value && $elements) {
       $found = FALSE;
       foreach ($elements as $element) {
-        if ((string) $element == $value) {
+        if ((string) $element === $value) {
           $found = TRUE;
           break;
         }
diff --git a/core/modules/update/update.api.php b/core/modules/update/update.api.php
index 83b93b2..4edc2c2 100644
--- a/core/modules/update/update.api.php
+++ b/core/modules/update/update.api.php
@@ -87,7 +87,7 @@ function hook_update_status_alter(&$projects) {
   $settings = variable_get('update_advanced_project_settings', array());
   foreach ($projects as $project => $project_info) {
     if (isset($settings[$project]) && isset($settings[$project]['check']) &&
-        ($settings[$project]['check'] == 'never' ||
+        ($settings[$project]['check'] === 'never' ||
           (isset($project_info['recommended']) &&
             $settings[$project]['check'] === $project_info['recommended']))) {
       $projects[$project]['status'] = UPDATE_NOT_CHECKED;
diff --git a/core/modules/update/update.authorize.inc b/core/modules/update/update.authorize.inc
index 48dfd35..43160c9 100644
--- a/core/modules/update/update.authorize.inc
+++ b/core/modules/update/update.authorize.inc
@@ -187,7 +187,7 @@ function update_authorize_update_batch_finished($success, $results) {
     _update_authorize_clear_update_status();
 
     // Take the site out of maintenance mode if it was previously that way.
-    if ($offline && isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] == FALSE) {
+    if ($offline && isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] === FALSE) {
       variable_set('maintenance_mode', FALSE);
       $page_message = array(
         'message' => t('Update was completed successfully. Your site has been taken out of maintenance mode.'),
@@ -245,7 +245,7 @@ function update_authorize_install_batch_finished($success, $results) {
   $offline = variable_get('maintenance_mode', FALSE);
   if ($success) {
     // Take the site out of maintenance mode if it was previously that way.
-    if ($offline && isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] == FALSE) {
+    if ($offline && isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] === FALSE) {
       variable_set('maintenance_mode', FALSE);
       $page_message = array(
         'message' => t('Installation was completed successfully. Your site has been taken out of maintenance mode.'),
diff --git a/core/modules/update/update.compare.inc b/core/modules/update/update.compare.inc
index b729750..89864d6 100644
--- a/core/modules/update/update.compare.inc
+++ b/core/modules/update/update.compare.inc
@@ -143,7 +143,7 @@ function _update_process_info_list(&$projects, $list, $project_type, $status) {
     // or theme. If the project name is 'drupal', we don't want it to show up
     // under the usual "Modules" section, we put it at a special "Drupal Core"
     // section at the top of the report.
-    if ($project_name == 'drupal') {
+    if ($project_name === 'drupal') {
       $project_display_type = 'core';
     }
     else {
@@ -157,7 +157,7 @@ function _update_process_info_list(&$projects, $list, $project_type, $status) {
     }
     // Add a list of sub-themes that "depend on" the project and a list of base
     // themes that are "required by" the project.
-    if ($project_name == 'drupal') {
+    if ($project_name === 'drupal') {
       // Drupal core is always required, so this extra info would be noise.
       $sub_themes = array();
       $base_themes = array();
@@ -184,7 +184,7 @@ function _update_process_info_list(&$projects, $list, $project_type, $status) {
         'base_themes' => $base_themes,
       );
     }
-    elseif ($projects[$project_name]['project_type'] == $project_display_type) {
+    elseif ($projects[$project_name]['project_type'] === $project_display_type) {
       // Only add the file we're processing to the 'includes' array for this
       // project if it is of the same type and status (which is encoded in the
       // $project_display_type). This prevents listing all the disabled
@@ -498,7 +498,7 @@ function update_calculate_project_update_status(&$project_data, $available) {
   // data we currently have (if any) is stale, and we've got a task queued
   // up to (re)fetch the data. In that case, we mark it as such, merge in
   // whatever data we have (e.g. project title and link), and move on.
-  if (!empty($available['fetch_status']) && $available['fetch_status'] == UPDATE_FETCH_PENDING) {
+  if (!empty($available['fetch_status']) && $available['fetch_status'] === UPDATE_FETCH_PENDING) {
     $project_data['status'] = UPDATE_FETCH_PENDING;
     $project_data['reason'] = t('No available update data');
     $project_data['fetch_status'] = $available['fetch_status'];
@@ -518,7 +518,7 @@ function update_calculate_project_update_status(&$project_data, $available) {
           in_array('Insecure', $release['terms']['Release type'])) {
         $project_data['status'] = UPDATE_NOT_SECURE;
       }
-      elseif ($release['status'] == 'unpublished') {
+      elseif ($release['status'] === 'unpublished') {
         $project_data['status'] = UPDATE_REVOKED;
         if (empty($project_data['extra'])) {
           $project_data['extra'] = array();
@@ -544,7 +544,7 @@ function update_calculate_project_update_status(&$project_data, $available) {
     }
 
     // Otherwise, ignore unpublished, insecure, or unsupported releases.
-    if ($release['status'] == 'unpublished' ||
+    if ($release['status'] === 'unpublished' ||
         (isset($release['terms']['Release type']) &&
          (in_array('Insecure', $release['terms']['Release type']) ||
           in_array('Unsupported', $release['terms']['Release type'])))) {
@@ -576,16 +576,16 @@ function update_calculate_project_update_status(&$project_data, $available) {
     // Look for the 'latest version' if we haven't found it yet. Latest is
     // defined as the most recent version for the target major version.
     if (!isset($project_data['latest_version'])
-        && $release['version_major'] == $target_major) {
+        && $release['version_major'] === $target_major) {
       $project_data['latest_version'] = $version;
       $project_data['releases'][$version] = $release;
     }
 
     // Look for the development snapshot release for this branch.
     if (!isset($project_data['dev_version'])
-        && $release['version_major'] == $target_major
+        && $release['version_major'] === $target_major
         && isset($release['version_extra'])
-        && $release['version_extra'] == 'dev') {
+        && $release['version_extra'] === 'dev') {
       $project_data['dev_version'] = $version;
       $project_data['releases'][$version] = $release;
     }
@@ -593,13 +593,13 @@ function update_calculate_project_update_status(&$project_data, $available) {
     // Look for the 'recommended' version if we haven't found it yet (see
     // phpdoc at the top of this function for the definition).
     if (!isset($project_data['recommended'])
-        && $release['version_major'] == $target_major
+        && $release['version_major'] === $target_major
         && isset($release['version_patch'])) {
       if ($patch != $release['version_patch']) {
         $patch = $release['version_patch'];
         $release_patch_changed = $release;
       }
-      if (empty($release['version_extra']) && $patch == $release['version_patch']) {
+      if (empty($release['version_extra']) && $patch === $release['version_patch']) {
         $project_data['recommended'] = $release_patch_changed['version'];
         $project_data['releases'][$release_patch_changed['version']] = $release_patch_changed;
       }
@@ -616,7 +616,7 @@ function update_calculate_project_update_status(&$project_data, $available) {
     // differences between the datestamp in the .info file and the
     // timestamp of the tarball itself (which are usually off by 1 or 2
     // seconds) so that we don't flag that as a new release.
-    if ($project_data['install_type'] == 'dev') {
+    if ($project_data['install_type'] === 'dev') {
       if (empty($project_data['datestamp'])) {
         // We don't have current timestamp info, so we can't know.
         continue;
@@ -666,7 +666,7 @@ function update_calculate_project_update_status(&$project_data, $available) {
   // with the latest official version, and record the absolute latest in
   // 'latest_dev' so we can correctly decide if there's a newer release
   // than our current snapshot.
-  if ($project_data['install_type'] == 'dev') {
+  if ($project_data['install_type'] === 'dev') {
     if (isset($project_data['dev_version']) && $available['releases'][$project_data['dev_version']]['date'] > $available['releases'][$project_data['latest_version']]['date']) {
       $project_data['latest_dev'] = $project_data['dev_version'];
     }
diff --git a/core/modules/update/update.fetch.inc b/core/modules/update/update.fetch.inc
index 8588832..5e2d2a8 100644
--- a/core/modules/update/update.fetch.inc
+++ b/core/modules/update/update.fetch.inc
@@ -311,11 +311,11 @@ function _update_cron_notify() {
   module_load_install('update');
   $status = update_requirements('runtime');
   $params = array();
-  $notify_all = (variable_get('update_notification_threshold', 'all') == 'all');
+  $notify_all = (variable_get('update_notification_threshold', 'all') === 'all');
   foreach (array('core', 'contrib') as $report_type) {
     $type = 'update_' . $report_type;
     if (isset($status[$type]['severity'])
-        && ($status[$type]['severity'] == REQUIREMENT_ERROR || ($notify_all && $status[$type]['reason'] == UPDATE_NOT_CURRENT))) {
+        && ($status[$type]['severity'] === REQUIREMENT_ERROR || ($notify_all && $status[$type]['reason'] === UPDATE_NOT_CURRENT))) {
       $params[$report_type] = $status[$type]['reason'];
     }
   }
diff --git a/core/modules/update/update.install b/core/modules/update/update.install
index 9ff39d1..4af1d60 100644
--- a/core/modules/update/update.install
+++ b/core/modules/update/update.install
@@ -28,7 +28,7 @@
  */
 function update_requirements($phase) {
   $requirements = array();
-  if ($phase == 'runtime') {
+  if ($phase === 'runtime') {
     if ($available = update_get_available(FALSE)) {
       module_load_include('inc', 'update', 'update.compare');
       $data = update_calculate_project_data($available);
@@ -116,7 +116,7 @@ function update_uninstall() {
  */
 function _update_requirement_check($project, $type) {
   $requirement = array();
-  if ($type == 'core') {
+  if ($type === 'core') {
     $requirement['title'] = t('Drupal core update status');
   }
   else {
@@ -151,7 +151,7 @@ function _update_requirement_check($project, $type) {
     default:
       $requirement_label = t('Up to date');
   }
-  if ($status != UPDATE_CURRENT && $type == 'core' && isset($project['recommended'])) {
+  if ($status != UPDATE_CURRENT && $type === 'core' && isset($project['recommended'])) {
     $requirement_label .= ' ' . t('(version @version available)', array('@version' => $project['recommended']));
   }
   $requirement['value'] = l($requirement_label, update_manager_access() ? 'admin/reports/updates/update' : 'admin/reports/updates');
diff --git a/core/modules/update/update.manager.inc b/core/modules/update/update.manager.inc
index f7881d4..72e6154 100644
--- a/core/modules/update/update.manager.inc
+++ b/core/modules/update/update.manager.inc
@@ -92,7 +92,7 @@ function update_manager_update_form($form, $form_state = array(), $context) {
   $project_data = update_calculate_project_data($available);
   foreach ($project_data as $name => $project) {
     // Filter out projects which are up to date already.
-    if ($project['status'] == UPDATE_CURRENT) {
+    if ($project['status'] === UPDATE_CURRENT) {
       continue;
     }
     // The project name to display can vary based on the info we have.
@@ -110,7 +110,7 @@ function update_manager_update_form($form, $form_state = array(), $context) {
     else {
       $project_name = check_plain($name);
     }
-    if ($project['project_type'] == 'theme' || $project['project_type'] == 'theme-disabled') {
+    if ($project['project_type'] === 'theme' || $project['project_type'] === 'theme-disabled') {
       $project_name .= ' ' . t('(Theme)');
     }
 
@@ -162,7 +162,7 @@ function update_manager_update_form($form, $form_state = array(), $context) {
     $entry['#attributes'] = array('class' => array('update-' . $type));
 
     // Drupal core needs to be upgraded manually.
-    $needs_manual = $project['project_type'] == 'core';
+    $needs_manual = $project['project_type'] === 'core';
 
     if ($needs_manual) {
       // There are no checkboxes in the 'Manual updates' table so it will be
@@ -408,7 +408,7 @@ function update_manager_update_ready_form($form, &$form_state) {
 function update_manager_update_ready_form_submit($form, &$form_state) {
   // Store maintenance_mode setting so we can restore it when done.
   $_SESSION['maintenance_mode'] = variable_get('maintenance_mode', FALSE);
-  if ($form_state['values']['maintenance_mode'] == TRUE) {
+  if ($form_state['values']['maintenance_mode'] === TRUE) {
     variable_set('maintenance_mode', TRUE);
   }
 
@@ -438,7 +438,7 @@ function update_manager_update_ready_form_submit($form, &$form_state) {
     // trying to install the code, there's no need to prompt for FTP/SSH
     // credentials. Instead, we instantiate a Drupal\Core\FileTransfer\Local and
     // invoke update_authorize_run_update() directly.
-    if (fileowner($project_real_location) == fileowner(conf_path())) {
+    if (fileowner($project_real_location) === fileowner(conf_path())) {
       module_load_include('inc', 'update', 'update.authorize');
       $filetransfer = new Local(DRUPAL_ROOT);
       update_authorize_run_update($filetransfer, $updates);
@@ -553,7 +553,7 @@ function _update_manager_check_backends(&$form, $operation) {
 
   $available_backends = drupal_get_filetransfer_info();
   if (empty($available_backends)) {
-    if ($operation == 'update') {
+    if ($operation === 'update') {
       $form['available_backends']['#markup'] = t('Your server does not support updating modules and themes from this interface. Instead, update modules and themes by uploading the new versions directly to the server, as described in the <a href="@handbook_url">handbook</a>.', array('@handbook_url' => 'http://drupal.org/getting-started/install-contrib'));
     }
     else {
@@ -566,7 +566,7 @@ function _update_manager_check_backends(&$form, $operation) {
   foreach ($available_backends as $backend) {
     $backend_names[] = $backend['title'];
   }
-  if ($operation == 'update') {
+  if ($operation === 'update') {
     $form['available_backends']['#markup'] = format_plural(
       count($available_backends),
       'Updating modules and themes requires <strong>@backends access</strong> to your server. See the <a href="@handbook_url">handbook</a> for other update methods.',
@@ -707,7 +707,7 @@ function update_manager_install_form_submit($form, &$form_state) {
   // trying to install the code, there's no need to prompt for FTP/SSH
   // credentials. Instead, we instantiate a Drupal\Core\FileTransfer\Local and
   // invoke update_authorize_run_install() directly.
-  if (fileowner($project_real_location) == fileowner(conf_path())) {
+  if (fileowner($project_real_location) === fileowner(conf_path())) {
     module_load_include('inc', 'update', 'update.authorize');
     $filetransfer = new Local(DRUPAL_ROOT);
     call_user_func_array('update_authorize_run_install', array_merge(array($filetransfer), $arguments));
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index ea9aec2..12c9301 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -106,7 +106,7 @@ function update_help($path, $arg) {
  * Implements hook_init().
  */
 function update_init() {
-  if (arg(0) == 'admin' && user_access('administer site configuration')) {
+  if (arg(0) === 'admin' && user_access('administer site configuration')) {
     switch ($_GET['q']) {
       // These pages don't need additional nagging.
       case 'admin/appearance/update':
@@ -135,10 +135,10 @@ function update_init() {
       $type = 'update_' . $report_type;
       if (!empty($verbose)) {
         if (isset($status[$type]['severity'])) {
-          if ($status[$type]['severity'] == REQUIREMENT_ERROR) {
+          if ($status[$type]['severity'] === REQUIREMENT_ERROR) {
             drupal_set_message($status[$type]['description'], 'error');
           }
-          elseif ($status[$type]['severity'] == REQUIREMENT_WARNING) {
+          elseif ($status[$type]['severity'] === REQUIREMENT_WARNING) {
             drupal_set_message($status[$type]['description'], 'warning');
           }
         }
@@ -410,7 +410,7 @@ function update_get_available($refresh = FALSE) {
 
     // If we think this project needs to fetch, actually create the task now
     // and remember that we think we're missing some data.
-    if (!empty($available[$key]['fetch_status']) && $available[$key]['fetch_status'] == UPDATE_FETCH_PENDING) {
+    if (!empty($available[$key]['fetch_status']) && $available[$key]['fetch_status'] === UPDATE_FETCH_PENDING) {
       update_create_fetch_task($project);
       $needs_refresh = TRUE;
     }
@@ -509,7 +509,7 @@ function update_mail($key, &$message, $params) {
     $message['body'][] = t('You can automatically install your missing updates using the Update manager:', array(), array('langcode' => $langcode)) . "\n" . url('admin/reports/updates/update', array('absolute' => TRUE, 'language' => $language));
   }
   $settings_url = url('admin/reports/updates/settings', array('absolute' => TRUE));
-  if (variable_get('update_notification_threshold', 'all') == 'all') {
+  if (variable_get('update_notification_threshold', 'all') === 'all') {
     $message['body'][] = t('Your site is currently configured to send these emails when any updates are available. To get notified only for security updates, !url.', array('!url' => $settings_url));
   }
   else {
@@ -542,7 +542,7 @@ function _update_message_text($msg_type, $msg_reason, $report_link = FALSE, $lan
   $text = '';
   switch ($msg_reason) {
     case UPDATE_NOT_SECURE:
-      if ($msg_type == 'core') {
+      if ($msg_type === 'core') {
         $text = t('There is a security update available for your version of Drupal. To ensure the security of your server, you should update immediately!', array(), array('langcode' => $langcode));
       }
       else {
@@ -551,7 +551,7 @@ function _update_message_text($msg_type, $msg_reason, $report_link = FALSE, $lan
       break;
 
     case UPDATE_REVOKED:
-      if ($msg_type == 'core') {
+      if ($msg_type === 'core') {
         $text = t('Your version of Drupal has been revoked and is no longer available for download. Upgrading is strongly recommended!', array(), array('langcode' => $langcode));
       }
       else {
@@ -560,7 +560,7 @@ function _update_message_text($msg_type, $msg_reason, $report_link = FALSE, $lan
       break;
 
     case UPDATE_NOT_SUPPORTED:
-      if ($msg_type == 'core') {
+      if ($msg_type === 'core') {
         $text = t('Your version of Drupal is no longer supported. Upgrading is strongly recommended!', array(), array('langcode' => $langcode));
       }
       else {
@@ -569,7 +569,7 @@ function _update_message_text($msg_type, $msg_reason, $report_link = FALSE, $lan
       break;
 
     case UPDATE_NOT_CURRENT:
-      if ($msg_type == 'core') {
+      if ($msg_type === 'core') {
         $text = t('There are updates available for your version of Drupal. To ensure the proper functioning of your site, you should update as soon as possible.', array(), array('langcode' => $langcode));
       }
       else {
@@ -581,7 +581,7 @@ function _update_message_text($msg_type, $msg_reason, $report_link = FALSE, $lan
     case UPDATE_NOT_CHECKED:
     case UPDATE_NOT_FETCHED:
     case UPDATE_FETCH_PENDING:
-      if ($msg_type == 'core') {
+      if ($msg_type === 'core') {
         $text = t('There was a problem checking <a href="@update-report">available updates</a> for Drupal.', array('@update-report' => url('admin/reports/updates')), array('langcode' => $langcode));
       }
       else {
@@ -843,11 +843,11 @@ function _update_cache_clear($cid = NULL, $wildcard = FALSE) {
  *
  * However, we only want to do this from update.php, since otherwise, we'd
  * lose all the available update data on every cron run. So, we specifically
- * check if the site is in MAINTENANCE_MODE == 'update' (which indicates
+ * check if the site is in MAINTENANCE_MODE === 'update' (which indicates
  * update.php is running, not update module... alas for overloaded names).
  */
 function update_flush_caches() {
-  if (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'update') {
+  if (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE === 'update') {
     _update_cache_clear();
   }
   return array();
diff --git a/core/modules/update/update.report.inc b/core/modules/update/update.report.inc
index 7703503..08d9564 100644
--- a/core/modules/update/update.report.inc
+++ b/core/modules/update/update.report.inc
@@ -98,7 +98,7 @@ function theme_update_report($variables) {
       $row .= check_plain($project['name']);
     }
     $row .= ' ' . check_plain($project['existing_version']);
-    if ($project['install_type'] == 'dev' && !empty($project['datestamp'])) {
+    if ($project['install_type'] === 'dev' && !empty($project['datestamp'])) {
       $row .= ' <span class="version-date">(' . format_date($project['datestamp'], 'custom', 'Y-M-d') . ')</span>';
     }
     $row .= "</div>\n";
@@ -113,7 +113,7 @@ function theme_update_report($variables) {
         // If there's only 1 security update and it has the same version we're
         // recommending, give it the same CSS class as if it was recommended,
         // but don't print out a separate "Recommended" line for this project.
-        if (!empty($project['security updates']) && count($project['security updates']) == 1 && $project['security updates'][0]['version'] === $project['recommended']) {
+        if (!empty($project['security updates']) && count($project['security updates']) === 1 && $project['security updates'][0]['version'] === $project['recommended']) {
           $security_class[] = 'version-recommended';
           $security_class[] = 'version-recommended-strong';
         }
@@ -123,7 +123,7 @@ function theme_update_report($variables) {
           // version and anything else for an extra visual hint.
           if ($project['recommended'] !== $project['latest_version']
               || !empty($project['also'])
-              || ($project['install_type'] == 'dev'
+              || ($project['install_type'] === 'dev'
                 && isset($project['dev_version'])
                 && $project['latest_version'] !== $project['dev_version']
                 && $project['recommended'] !== $project['dev_version'])
@@ -147,7 +147,7 @@ function theme_update_report($variables) {
       if ($project['recommended'] !== $project['latest_version']) {
         $versions_inner .= theme('update_version', array('version' => $project['releases'][$project['latest_version']], 'tag' => t('Latest version:'), 'class' => array('version-latest')));
       }
-      if ($project['install_type'] == 'dev'
+      if ($project['install_type'] === 'dev'
           && $project['status'] != UPDATE_CURRENT
           && isset($project['dev_version'])
           && $project['recommended'] !== $project['dev_version']) {
diff --git a/core/modules/update/update.settings.inc b/core/modules/update/update.settings.inc
index 60ac3ca..732dfa2 100644
--- a/core/modules/update/update.settings.inc
+++ b/core/modules/update/update.settings.inc
@@ -79,7 +79,7 @@ function update_settings_validate($form, &$form_state) {
     if (empty($invalid)) {
       $form_state['notify_emails'] = $valid;
     }
-    elseif (count($invalid) == 1) {
+    elseif (count($invalid) === 1) {
       form_set_error('update_notify_emails', t('%email is not a valid e-mail address.', array('%email' => reset($invalid))));
     }
     else {
diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc
index f7d4552..0300449 100644
--- a/core/modules/user/user.admin.inc
+++ b/core/modules/user/user.admin.inc
@@ -14,7 +14,7 @@ function user_admin($callback_arg = '') {
       $build['user_register'] = drupal_get_form('user_register_form');
       break;
     default:
-      if (!empty($_POST['accounts']) && isset($_POST['operation']) && ($_POST['operation'] == 'cancel')) {
+      if (!empty($_POST['accounts']) && isset($_POST['operation']) && ($_POST['operation'] === 'cancel')) {
         $build['user_multiple_cancel_confirm'] = drupal_get_form('user_multiple_cancel_confirm');
       }
       else {
@@ -43,7 +43,7 @@ function user_filter_form() {
   );
   foreach ($session as $filter) {
     list($type, $value) = $filter;
-    if ($type == 'permission') {
+    if ($type === 'permission') {
       // Merge arrays of module permissions into one.
       // Slice past the first element '[any]' whose value is not an array.
       $options = call_user_func_array('array_merge', array_slice($filters[$type]['options'], 1));
@@ -246,7 +246,7 @@ function user_admin_account_submit($form, &$form_state) {
 
 function user_admin_account_validate($form, &$form_state) {
   $form_state['values']['accounts'] = array_filter($form_state['values']['accounts']);
-  if (count($form_state['values']['accounts']) == 0) {
+  if (count($form_state['values']['accounts']) === 0) {
     form_set_error('', t('No users selected.'));
   }
 }
@@ -928,7 +928,7 @@ function theme_user_admin_roles($variables) {
  * @see user_admin_role_submit()
  */
 function user_admin_role($form, $form_state, $role) {
-  if ($role->rid == DRUPAL_ANONYMOUS_RID || $role->rid == DRUPAL_AUTHENTICATED_RID) {
+  if ($role->rid === DRUPAL_ANONYMOUS_RID || $role->rid === DRUPAL_AUTHENTICATED_RID) {
     drupal_goto('admin/people/permissions/roles');
   }
 
@@ -969,13 +969,13 @@ function user_admin_role($form, $form_state, $role) {
  */
 function user_admin_role_validate($form, &$form_state) {
   if (!empty($form_state['values']['name'])) {
-    if ($form_state['values']['op'] == t('Save role')) {
+    if ($form_state['values']['op'] === t('Save role')) {
       $role = user_role_load_by_name($form_state['values']['name']);
       if ($role && $role->rid != $form_state['values']['rid']) {
         form_set_error('name', t('The role name %name already exists. Choose another role name.', array('%name' => $form_state['values']['name'])));
       }
     }
-    elseif ($form_state['values']['op'] == t('Add role')) {
+    elseif ($form_state['values']['op'] === t('Add role')) {
       if (user_role_load_by_name($form_state['values']['name'])) {
         form_set_error('name', t('The role name %name already exists. Choose another role name.', array('%name' => $form_state['values']['name'])));
       }
@@ -991,11 +991,11 @@ function user_admin_role_validate($form, &$form_state) {
  */
 function user_admin_role_submit($form, &$form_state) {
   $role = (object) $form_state['values'];
-  if ($form_state['values']['op'] == t('Save role')) {
+  if ($form_state['values']['op'] === t('Save role')) {
     user_role_save($role);
     drupal_set_message(t('The role has been renamed.'));
   }
-  elseif ($form_state['values']['op'] == t('Add role')) {
+  elseif ($form_state['values']['op'] === t('Add role')) {
     user_role_save($role);
     drupal_set_message(t('The role has been added.'));
   }
diff --git a/core/modules/user/user.entity.inc b/core/modules/user/user.entity.inc
index 5549c77..0e4d7e6 100644
--- a/core/modules/user/user.entity.inc
+++ b/core/modules/user/user.entity.inc
@@ -34,7 +34,7 @@ class UserController extends DrupalDefaultEntityController {
     }
 
     // Add the full file objects for user pictures if enabled.
-    if (!empty($picture_fids) && variable_get('user_pictures', 1) == 1) {
+    if (!empty($picture_fids) && variable_get('user_pictures', 1) === 1) {
       $pictures = file_load_multiple($picture_fids);
       foreach ($queried_users as $account) {
         if (!empty($account->picture) && isset($pictures[$account->picture])) {
diff --git a/core/modules/user/user.js b/core/modules/user/user.js
index 74905f3..5eaec2d 100644
--- a/core/modules/user/user.js
+++ b/core/modules/user/user.js
@@ -39,7 +39,7 @@ Drupal.behaviors.password = {
         }
 
         // Only show the description box if there is a weakness in the password.
-        if (result.strength == 100) {
+        if (result.strength === 100) {
           passwordDescription.hide();
         }
         else {
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 3b1d9cb..425d3b1 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -491,7 +491,7 @@ function user_save($account, $edit = array()) {
       }
 
       // Delete a blocked user's sessions to kick them if they are online.
-      if ($account->original->status != $account->status && $account->status == 0) {
+      if ($account->original->status != $account->status && $account->status === 0) {
         drupal_session_destroy_uid($account->uid);
       }
 
@@ -499,7 +499,7 @@ function user_save($account, $edit = array()) {
       // the current one.
       if ($account->pass != $account->original->pass) {
         drupal_session_destroy_uid($account->uid);
-        if ($account->uid == $GLOBALS['user']->uid) {
+        if ($account->uid === $GLOBALS['user']->uid) {
           drupal_session_regenerate();
         }
       }
@@ -510,7 +510,7 @@ function user_save($account, $edit = array()) {
       // Send emails after we have the new user object.
       if ($account->status != $account->original->status) {
         // The user's status is changing; conditionally send notification email.
-        $op = $account->status == 1 ? 'status_activated' : 'status_blocked';
+        $op = $account->status === 1 ? 'status_activated' : 'status_blocked';
         _user_mail_notify($op, $account);
       }
 
@@ -584,10 +584,10 @@ function user_validate_name($name) {
   if (!$name) {
     return t('You must enter a username.');
   }
-  if (substr($name, 0, 1) == ' ') {
+  if (substr($name, 0, 1) === ' ') {
     return t('The username cannot begin with a space.');
   }
-  if (substr($name, -1) == ' ') {
+  if (substr($name, -1) === ' ') {
     return t('The username cannot end with a space.');
   }
   if (strpos($name, '  ') !== FALSE) {
@@ -732,7 +732,7 @@ function user_access($string, $account = NULL) {
   }
 
   // User #1 has all privileges:
-  if ($account->uid == 1) {
+  if ($account->uid === 1) {
     return TRUE;
   }
 
@@ -943,7 +943,7 @@ function user_account_form(&$form, &$form_state) {
     '#required' => TRUE,
     '#attributes' => array('class' => array('username')),
     '#default_value' => (!$register ? $account->name : ''),
-    '#access' => ($register || ($user->uid == $account->uid && user_access('change own username')) || $admin),
+    '#access' => ($register || ($user->uid === $account->uid && user_access('change own username')) || $admin),
     '#weight' => -10,
   );
 
@@ -968,7 +968,7 @@ function user_account_form(&$form, &$form_state) {
     );
     // To skip the current password field, the user must have logged in via a
     // one-time link and have the token in the URL.
-    $pass_reset = isset($_SESSION['pass_reset_' . $account->uid]) && isset($_GET['pass-reset-token']) && ($_GET['pass-reset-token'] == $_SESSION['pass_reset_' . $account->uid]);
+    $pass_reset = isset($_SESSION['pass_reset_' . $account->uid]) && isset($_GET['pass-reset-token']) && ($_GET['pass-reset-token'] === $_SESSION['pass_reset_' . $account->uid]);
     $protected_values = array();
     $current_pass_description = '';
     // The user may only change their own password without their current
@@ -980,7 +980,7 @@ function user_account_form(&$form, &$form_state) {
       $current_pass_description = t('Required if you want to change the %mail or %pass below. !request_new.', array('%mail' => $protected_values['mail'], '%pass' => $protected_values['pass'], '!request_new' => $request_new));
     }
     // The user must enter their current password to change to a new one.
-    if ($user->uid == $account->uid) {
+    if ($user->uid === $account->uid) {
       $form['account']['current_pass_required_values'] = array(
         '#type' => 'value',
         '#value' => $protected_values,
@@ -1010,7 +1010,7 @@ function user_account_form(&$form, &$form_state) {
     $status = isset($account->status) ? $account->status : 1;
   }
   else {
-    $status = $register ? variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) == USER_REGISTER_VISITORS : $account->status;
+    $status = $register ? variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) === USER_REGISTER_VISITORS : $account->status;
   }
   $form['account']['status'] = array(
     '#type' => 'radios',
@@ -1289,7 +1289,7 @@ function user_block_view($delta = '') {
   switch ($delta) {
     case 'login':
       // For usability's sake, avoid showing two login forms on one page.
-      if (!$user->uid && !(arg(0) == 'user' && !is_numeric(arg(1)))) {
+      if (!$user->uid && !(arg(0) === 'user' && !is_numeric(arg(1)))) {
 
         $block['subject'] = t('User login');
         $block['content'] = drupal_get_form('user_login_block');
@@ -1336,7 +1336,7 @@ function user_block_view($delta = '') {
  * Implements hook_preprocess_block().
  */
 function user_preprocess_block(&$variables) {
-  if ($variables['block']->module == 'user') {
+  if ($variables['block']->module === 'user') {
     switch ($variables['block']->delta) {
       case 'login':
         $variables['attributes_array']['role'] = 'form';
@@ -1583,7 +1583,7 @@ function user_view_access($account) {
   // Never allow access to view the anonymous user account.
   if ($uid) {
     // Admins can view all, users can view own profiles at all times.
-    if ($GLOBALS['user']->uid == $uid || user_access('administer users')) {
+    if ($GLOBALS['user']->uid === $uid || user_access('administer users')) {
       return TRUE;
     }
     elseif (user_access('access user profiles')) {
@@ -1601,7 +1601,7 @@ function user_view_access($account) {
  * Access callback for user account editing.
  */
 function user_edit_access($account) {
-  return (($GLOBALS['user']->uid == $account->uid) || user_access('administer users')) && $account->uid > 0;
+  return (($GLOBALS['user']->uid === $account->uid) || user_access('administer users')) && $account->uid > 0;
 }
 
 /**
@@ -1611,7 +1611,7 @@ function user_edit_access($account) {
  * users, and prevent the anonymous user from cancelling the account.
  */
 function user_cancel_access($account) {
-  return ((($GLOBALS['user']->uid == $account->uid) && user_access('cancel account')) || user_access('administer users')) && $account->uid > 0;
+  return ((($GLOBALS['user']->uid === $account->uid) && user_access('cancel account')) || user_access('administer users')) && $account->uid > 0;
 }
 
 /**
@@ -1828,7 +1828,7 @@ function user_menu() {
  * Implements hook_menu_site_status_alter().
  */
 function user_menu_site_status_alter(&$menu_site_status, $path) {
-  if ($menu_site_status == MENU_SITE_OFFLINE) {
+  if ($menu_site_status === MENU_SITE_OFFLINE) {
     // If the site is offline, log out unprivileged users.
     if (user_is_logged_in() && !user_access('access site in maintenance mode')) {
       module_load_include('pages.inc', 'user', 'user');
@@ -1855,11 +1855,11 @@ function user_menu_site_status_alter(&$menu_site_status, $path) {
     }
   }
   if (user_is_logged_in()) {
-    if ($path == 'user/login') {
+    if ($path === 'user/login') {
       // If user is logged in, redirect to 'user' instead of giving 403.
       drupal_goto('user');
     }
-    if ($path == 'user/register') {
+    if ($path === 'user/register') {
       // Authenticated user should be redirected to user edit page.
       drupal_goto('user/' . $GLOBALS['user']->uid . '/edit');
     }
@@ -1874,13 +1874,13 @@ function user_menu_link_alter(&$link) {
   // for authenticated users. Authenticated users should see "My account", but
   // anonymous users should not see it at all. Therefore, invoke
   // user_translated_menu_link_alter() to conditionally hide the link.
-  if ($link['link_path'] == 'user' && $link['module'] == 'system') {
+  if ($link['link_path'] === 'user' && $link['module'] === 'system') {
     $link['options']['alter'] = TRUE;
   }
 
   // Force the Logout link to appear on the top-level of 'user-menu' menu by
   // default (i.e., unless it has been customized).
-  if ($link['link_path'] == 'user/logout' && $link['module'] == 'system' && empty($link['customized'])) {
+  if ($link['link_path'] === 'user/logout' && $link['module'] === 'system' && empty($link['customized'])) {
     $link['plid'] = 0;
   }
 }
@@ -1890,7 +1890,7 @@ function user_menu_link_alter(&$link) {
  */
 function user_translated_menu_link_alter(&$link) {
   // Hide the "User account" link for anonymous users.
-  if ($link['link_path'] == 'user' && $link['module'] == 'system' && user_is_anonymous()) {
+  if ($link['link_path'] === 'user' && $link['module'] === 'system' && user_is_anonymous()) {
     $link['hidden'] = 1;
   }
 }
@@ -1947,7 +1947,7 @@ function user_uid_optional_to_arg($arg) {
   // Give back the current user uid when called from eg. tracker, aka.
   // with an empty arg. Also use the current user uid when called from
   // the menu with a % for the current account link.
-  return empty($arg) || $arg == '%' ? $GLOBALS['user']->uid : $arg;
+  return empty($arg) || $arg === '%' ? $GLOBALS['user']->uid : $arg;
 }
 
 /**
@@ -2141,7 +2141,7 @@ function user_login_final_validate($form, &$form_state) {
     }
 
     if (isset($form_state['flood_control_triggered'])) {
-      if ($form_state['flood_control_triggered'] == 'user') {
+      if ($form_state['flood_control_triggered'] === 'user') {
         form_set_error('name', format_plural(variable_get('user_failed_login_user_limit', 5), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or <a href="@url">request a new password</a>.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or <a href="@url">request a new password</a>.', array('@url' => url('user/password'))));
       }
       else {
@@ -2414,7 +2414,7 @@ function _user_cancel($edit, $account, $method) {
   }
 
   // After cancelling account, ensure that user is logged out.
-  if ($account->uid == $user->uid) {
+  if ($account->uid === $user->uid) {
     // Destroy the current session, and reset $user to the anonymous user.
     session_destroy();
   }
@@ -2953,7 +2953,7 @@ function user_role_delete($role) {
  */
 function user_role_edit_access($role) {
   // Prevent the system-defined roles from being altered or removed.
-  if ($role->rid == DRUPAL_ANONYMOUS_RID || $role->rid == DRUPAL_AUTHENTICATED_RID) {
+  if ($role->rid === DRUPAL_ANONYMOUS_RID || $role->rid === DRUPAL_AUTHENTICATED_RID) {
     return FALSE;
   }
 
@@ -3124,7 +3124,7 @@ function user_user_operations($form = array(), $form_state = array()) {
   if (!empty($form_state['submitted'])) {
     $operation_rid = explode('-', $form_state['values']['operation']);
     $operation = $operation_rid[0];
-    if ($operation == 'add_role' || $operation == 'remove_role') {
+    if ($operation === 'add_role' || $operation === 'remove_role') {
       $rid = $operation_rid[1];
       if (user_access('administer permissions')) {
         $operations[$form_state['values']['operation']] = array(
@@ -3149,7 +3149,7 @@ function user_user_operations_unblock($accounts) {
   $accounts = user_load_multiple($accounts);
   foreach ($accounts as $account) {
     // Skip unblocking user if they are already unblocked.
-    if ($account !== FALSE && $account->status == 0) {
+    if ($account !== FALSE && $account->status === 0) {
       user_save($account, array('status' => 1));
     }
   }
@@ -3162,7 +3162,7 @@ function user_user_operations_block($accounts) {
   $accounts = user_load_multiple($accounts);
   foreach ($accounts as $account) {
     // Skip blocking user if they are already blocked.
-    if ($account !== FALSE && $account->status == 1) {
+    if ($account !== FALSE && $account->status === 1) {
       // For efficiency manually save the original account before applying any
       // changes.
       $account->original = clone $account;
@@ -3229,7 +3229,7 @@ function user_multiple_cancel_confirm($form, &$form_state) {
 
   // Output a notice that user 1 cannot be canceled.
   if (isset($accounts[1])) {
-    $redirect = (count($accounts) == 1);
+    $redirect = (count($accounts) === 1);
     $message = t('The user account %name cannot be cancelled.', array('%name' => $accounts[1]->name));
     drupal_set_message($message, $redirect ? 'error' : 'warning');
     // If only user 1 was selected, redirect to the overview.
@@ -3289,7 +3289,7 @@ function user_multiple_cancel_confirm_submit($form, &$form_state) {
         continue;
       }
       // Prevent user administrators from deleting themselves without confirmation.
-      if ($uid == $user->uid) {
+      if ($uid === $user->uid) {
         $admin_form_state = $form_state;
         unset($admin_form_state['values']['user_cancel_confirm']);
         $admin_form_state['values']['_account'] = $user;
@@ -3365,7 +3365,7 @@ function user_build_filter_query(SelectInterface $query) {
     // This checks to see if this permission filter is an enabled permission for
     // the authenticated role. If so, then all users would be listed, and we can
     // skip adding it to the filter query.
-    if ($key == 'permission') {
+    if ($key === 'permission') {
       $account = new stdClass();
       $account->uid = 'user_filter';
       $account->roles = array(DRUPAL_AUTHENTICATED_RID => 1);
@@ -3376,7 +3376,7 @@ function user_build_filter_query(SelectInterface $query) {
       $permission_alias = $query->join('role_permission', 'p', $users_roles_alias . '.rid = %alias.rid');
       $query->condition($permission_alias . '.permission', $value);
     }
-    elseif ($key == 'role') {
+    elseif ($key === 'role') {
       $users_roles_alias = $query->join('users_roles', 'ur', '%alias.uid = u.uid');
       $query->condition($users_roles_alias . '.rid' , $value);
     }
@@ -3486,7 +3486,7 @@ function _user_mail_notify($op, $account, $language = NULL) {
     $params['account'] = $account;
     $language = $language ? $language : user_preferred_language($account);
     $mail = drupal_mail('user', $op, $account->mail, $language, $params);
-    if ($op == 'register_pending_approval') {
+    if ($op === 'register_pending_approval') {
       // If a user registered requiring admin approval, notify the admin, too.
       // We use the site default language for this.
       drupal_mail('user', 'register_pending_approval_admin', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params);
@@ -3574,7 +3574,7 @@ function user_image_style_delete($style) {
  */
 function user_image_style_save($style) {
   // If a style is renamed, update the variables that use it.
-  if (isset($style['old_name']) && $style['old_name'] == variable_get('user_picture_style', '')) {
+  if (isset($style['old_name']) && $style['old_name'] === variable_get('user_picture_style', '')) {
     variable_set('user_picture_style', $style['name']);
   }
 }
@@ -3625,7 +3625,7 @@ function user_block_user_action(&$entity, $context = array()) {
 function user_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
   $instance = $form['#instance'];
 
-  if ($instance['entity_type'] == 'user') {
+  if ($instance['entity_type'] === 'user') {
     $form['instance']['settings']['user_register_form'] = array(
       '#type' => 'checkbox',
       '#title' => t('Display on user registration form.'),
@@ -3856,7 +3856,7 @@ function user_modules_uninstalled($modules) {
  */
 function user_login_destination() {
   $destination = drupal_get_destination();
-  if ($destination['destination'] == 'user/login') {
+  if ($destination['destination'] === 'user/login') {
     $destination['destination'] = 'user';
   }
   return $destination;
@@ -3911,7 +3911,7 @@ function user_rdf_mapping() {
  * Implements hook_file_download_access().
  */
 function user_file_download_access($field, $entity_type, $entity) {
-  if ($entity_type == 'user') {
+  if ($entity_type === 'user') {
     return user_view_access($entity);
   }
 }
diff --git a/core/modules/user/user.pages.inc b/core/modules/user/user.pages.inc
index f24849c..86163da 100644
--- a/core/modules/user/user.pages.inc
+++ b/core/modules/user/user.pages.inc
@@ -96,7 +96,7 @@ function user_pass_reset($form, &$form_state, $uid, $timestamp, $hashed_pass, $a
   // isn't already logged in.
   if ($user->uid) {
     // The existing user is already logged in.
-    if ($user->uid == $uid) {
+    if ($user->uid === $uid) {
       drupal_set_message(t('You are logged in as %user. <a href="!user_edit">Change your password.</a>', array('%user' => $user->name, '!user_edit' => url("user/$user->uid/edit"))));
     }
     // A different user is already logged in on the computer.
@@ -125,9 +125,9 @@ function user_pass_reset($form, &$form_state, $uid, $timestamp, $hashed_pass, $a
         drupal_set_message(t('You have tried to use a one-time login link that has expired. Please request a new one using the form below.'));
         drupal_goto('user/password');
       }
-      elseif ($account->uid && $timestamp >= $account->login && $timestamp <= $current && $hashed_pass == user_pass_rehash($account->pass, $timestamp, $account->login)) {
+      elseif ($account->uid && $timestamp >= $account->login && $timestamp <= $current && $hashed_pass === user_pass_rehash($account->pass, $timestamp, $account->login)) {
         // First stage is a confirmation form, then login
-        if ($action == 'login') {
+        if ($action === 'login') {
           watchdog('user', 'User %name used one-time login link at time %timestamp.', array('%name' => $account->name, '%timestamp' => $timestamp));
           // Set the new user.
           $user = $account;
@@ -239,7 +239,7 @@ function user_profile_form($form, &$form_state, $account) {
     '#type' => 'submit',
     '#value' => t('Cancel account'),
     '#submit' => array('user_edit_cancel_submit'),
-    '#access' => $account->uid > 1 && (($account->uid == $user->uid && user_access('cancel account')) || user_access('administer users')),
+    '#access' => $account->uid > 1 && (($account->uid === $user->uid && user_access('cancel account')) || user_access('administer users')),
   );
 
   $form['#validate'][] = 'user_profile_form_validate';
@@ -319,7 +319,7 @@ function user_cancel_confirm_form($form, &$form_state, $account) {
   $can_select_method = $admin_access || user_access('select account cancellation method');
   $form['user_cancel_method'] = array(
     '#type' => 'item',
-    '#title' => ($account->uid == $user->uid ? t('When cancelling your account') : t('When cancelling the account')),
+    '#title' => ($account->uid === $user->uid ? t('When cancelling your account') : t('When cancelling the account')),
     '#access' => $can_select_method,
   );
   $form['user_cancel_method'] += user_cancel_methods();
@@ -346,7 +346,7 @@ function user_cancel_confirm_form($form, &$form_state, $account) {
   );
 
   // Prepare confirmation form page title and description.
-  if ($account->uid == $user->uid) {
+  if ($account->uid === $user->uid) {
     $question = t('Are you sure you want to cancel your account?');
   }
   else {
@@ -363,7 +363,7 @@ function user_cancel_confirm_form($form, &$form_state, $account) {
     // The radio button #description is used as description for the confirmation
     // form.
     foreach (element_children($form['user_cancel_method']) as $element) {
-      if ($form['user_cancel_method'][$element]['#default_value'] == $form['user_cancel_method'][$element]['#return_value']) {
+      if ($form['user_cancel_method'][$element]['#default_value'] === $form['user_cancel_method'][$element]['#return_value']) {
         $description = $form['user_cancel_method'][$element]['#description'];
       }
       unset($form['user_cancel_method'][$element]['#description']);
@@ -478,7 +478,7 @@ function user_cancel_confirm($account, $timestamp = 0, $hashed_pass = '') {
   // Basic validation of arguments.
   if (isset($account->data['user_cancel_method']) && !empty($timestamp) && !empty($hashed_pass)) {
     // Validate expiration and hashed password/login.
-    if ($timestamp <= $current && $current - $timestamp < $timeout && $account->uid && $timestamp >= $account->login && $hashed_pass == user_pass_rehash($account->pass, $timestamp, $account->login)) {
+    if ($timestamp <= $current && $current - $timestamp < $timeout && $account->uid && $timestamp >= $account->login && $hashed_pass === user_pass_rehash($account->pass, $timestamp, $account->login)) {
       $edit = array(
         'user_cancel_notify' => isset($account->data['user_cancel_notify']) ? $account->data['user_cancel_notify'] : variable_get('user_mail_status_canceled_notify', FALSE),
       );
diff --git a/core/modules/user/user.test b/core/modules/user/user.test
index 3a3a713..bd1f76d 100644
--- a/core/modules/user/user.test
+++ b/core/modules/user/user.test
@@ -164,7 +164,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
     $this->assertEqual($new_user->theme, '', t('Correct theme field.'));
     $this->assertEqual($new_user->signature, '', t('Correct signature field.'));
     $this->assertTrue(($new_user->created > REQUEST_TIME - 20 ), t('Correct creation time.'));
-    $this->assertEqual($new_user->status, variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) == USER_REGISTER_VISITORS ? 1 : 0, t('Correct status field.'));
+    $this->assertEqual($new_user->status, variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) === USER_REGISTER_VISITORS ? 1 : 0, t('Correct status field.'));
     $this->assertEqual($new_user->timezone, variable_get('date_default_timezone'), t('Correct time zone field.'));
     $this->assertEqual($new_user->langcode, '', t('Correct language field.'));
     $this->assertEqual($new_user->preferred_langcode, '', t('Correct preferred language field.'));
@@ -234,7 +234,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
       $value = rand(1, 255);
       $edit = array();
       $edit['test_user_field[und][0][value]'] = $value;
-      if ($js == 'js') {
+      if ($js === 'js') {
         $this->drupalPostAJAX(NULL, $edit, 'test_user_field_add_more');
         $this->drupalPostAJAX(NULL, $edit, 'test_user_field_add_more');
       }
@@ -424,7 +424,7 @@ class UserLoginTestCase extends DrupalWebTestCase {
     $this->drupalPost('user', $edit, t('Log in'));
     $this->assertNoFieldByXPath("//input[@name='pass' and @value!='']", NULL, t('Password value attribute is blank.'));
     if (isset($flood_trigger)) {
-      if ($flood_trigger == 'user') {
+      if ($flood_trigger === 'user') {
         $this->assertRaw(format_plural(variable_get('user_failed_login_user_limit', 5), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or <a href="@url">request a new password</a>.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or <a href="@url">request a new password</a>.', array('@url' => url('user/password'))));
       }
       else {
@@ -532,11 +532,11 @@ class UserCancelTestCase extends DrupalWebTestCase {
     $this->drupalGet("user/$account->uid/cancel/confirm/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login));
     $this->assertResponse(403, t('Bogus cancelling request rejected.'));
     $account = user_load($account->uid);
-    $this->assertTrue($account->status == 1, t('User account was not canceled.'));
+    $this->assertTrue($account->status === 1, t('User account was not canceled.'));
 
     // Confirm user's content has not been altered.
     $test_node = node_load($node->nid, NULL, TRUE);
-    $this->assertTrue(($test_node->uid == $account->uid && $test_node->status == 1), t('Node of the user has not been altered.'));
+    $this->assertTrue(($test_node->uid === $account->uid && $test_node->status === 1), t('Node of the user has not been altered.'));
   }
 
   /**
@@ -605,7 +605,7 @@ class UserCancelTestCase extends DrupalWebTestCase {
     $this->drupalGet("user/$account->uid/cancel/confirm/$bogus_timestamp/" . user_pass_rehash($account->pass, $bogus_timestamp, $account->login));
     $this->assertText(t('You have tried to use an account cancellation link that has expired. Please request a new one using the form below.'), t('Bogus cancelling request rejected.'));
     $account = user_load($account->uid);
-    $this->assertTrue($account->status == 1, t('User account was not canceled.'));
+    $this->assertTrue($account->status === 1, t('User account was not canceled.'));
 
     // Attempt expired account cancellation request confirmation.
     $bogus_timestamp = $timestamp - 86400 - 60;
@@ -616,7 +616,7 @@ class UserCancelTestCase extends DrupalWebTestCase {
 
     // Confirm user's content has not been altered.
     $test_node = node_load($node->nid, NULL, TRUE);
-    $this->assertTrue(($test_node->uid == $account->uid && $test_node->status == 1), t('Node of the user has not been altered.'));
+    $this->assertTrue(($test_node->uid === $account->uid && $test_node->status === 1), t('Node of the user has not been altered.'));
   }
 
   /**
@@ -648,7 +648,7 @@ class UserCancelTestCase extends DrupalWebTestCase {
     // Confirm account cancellation request.
     $this->drupalGet("user/$account->uid/cancel/confirm/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login));
     $account = user_load($account->uid, TRUE);
-    $this->assertTrue($account->status == 0, t('User has been blocked.'));
+    $this->assertTrue($account->status === 0, t('User has been blocked.'));
 
     // Confirm user is logged out.
     $this->assertNoText($account->name, t('Logged out.'));
@@ -686,13 +686,13 @@ class UserCancelTestCase extends DrupalWebTestCase {
     // Confirm account cancellation request.
     $this->drupalGet("user/$account->uid/cancel/confirm/$timestamp/" . user_pass_rehash($account->pass, $timestamp, $account->login));
     $account = user_load($account->uid, TRUE);
-    $this->assertTrue($account->status == 0, t('User has been blocked.'));
+    $this->assertTrue($account->status === 0, t('User has been blocked.'));
 
     // Confirm user's content has been unpublished.
     $test_node = node_load($node->nid, NULL, TRUE);
-    $this->assertTrue($test_node->status == 0, t('Node of the user has been unpublished.'));
+    $this->assertTrue($test_node->status === 0, t('Node of the user has been unpublished.'));
     $test_node = node_load($node->nid, $node->vid, TRUE);
-    $this->assertTrue($test_node->status == 0, t('Node revision of the user has been unpublished.'));
+    $this->assertTrue($test_node->status === 0, t('Node revision of the user has been unpublished.'));
 
     // Confirm user is logged out.
     $this->assertNoText($account->name, t('Logged out.'));
@@ -739,11 +739,11 @@ class UserCancelTestCase extends DrupalWebTestCase {
 
     // Confirm that user's content has been attributed to anonymous user.
     $test_node = node_load($node->nid, NULL, TRUE);
-    $this->assertTrue(($test_node->uid == 0 && $test_node->status == 1), t('Node of the user has been attributed to anonymous user.'));
+    $this->assertTrue(($test_node->uid === 0 && $test_node->status === 1), t('Node of the user has been attributed to anonymous user.'));
     $test_node = node_load($revision_node->nid, $revision, TRUE);
-    $this->assertTrue(($test_node->revision_uid == 0 && $test_node->status == 1), t('Node revision of the user has been attributed to anonymous user.'));
+    $this->assertTrue(($test_node->revision_uid === 0 && $test_node->status === 1), t('Node revision of the user has been attributed to anonymous user.'));
     $test_node = node_load($revision_node->nid, NULL, TRUE);
-    $this->assertTrue(($test_node->uid != 0 && $test_node->status == 1), t("Current revision of the user's node was not attributed to anonymous user."));
+    $this->assertTrue(($test_node->uid != 0 && $test_node->status === 1), t("Current revision of the user's node was not attributed to anonymous user."));
 
     // Confirm that user is logged out.
     $this->assertNoText($account->name, t('Logged out.'));
@@ -910,7 +910,7 @@ class UserCancelTestCase extends DrupalWebTestCase {
     // Ensure that admin account was not cancelled.
     $this->assertText(t('A confirmation request to cancel your account has been sent to your e-mail address.'), t('Account cancellation request mailed message displayed.'));
     $admin_user = user_load($admin_user->uid);
-    $this->assertTrue($admin_user->status == 1, t('Administrative user is found in the database and enabled.'));
+    $this->assertTrue($admin_user->status === 1, t('Administrative user is found in the database and enabled.'));
 
     // Verify that uid 1's account was not cancelled.
     $user1 = user_load(1, TRUE);
@@ -2053,7 +2053,7 @@ class UserRoleAdminTestCase extends DrupalWebTestCase {
     // Retrieve the saved role and compare its weight.
     $role = user_role_load($rid);
     $new_weight = $role->weight;
-    $this->assertTrue(($old_weight + 1) == $new_weight, t('Role weight updated successfully.'));
+    $this->assertTrue(($old_weight + 1) === $new_weight, t('Role weight updated successfully.'));
   }
 }
 
diff --git a/core/modules/user/user.tokens.inc b/core/modules/user/user.tokens.inc
index 833e763..bf1d7b0 100644
--- a/core/modules/user/user.tokens.inc
+++ b/core/modules/user/user.tokens.inc
@@ -74,7 +74,7 @@ function user_tokens($type, $tokens, array $data = array(), array $options = arr
 
   $replacements = array();
 
-  if ($type == 'user' && !empty($data['user'])) {
+  if ($type === 'user' && !empty($data['user'])) {
     $account = $data['user'];
     foreach ($tokens as $name => $original) {
       switch ($name) {
@@ -122,7 +122,7 @@ function user_tokens($type, $tokens, array $data = array(), array $options = arr
     }
   }
 
-  if ($type == 'current-user') {
+  if ($type === 'current-user') {
     $account = user_load($GLOBALS['user']->uid);
     $replacements += token_generate('user', $tokens, array('user' => $account), $options);
   }
diff --git a/core/scripts/drupal.sh b/core/scripts/drupal.sh
index cf17e68..fad5024 100755
--- a/core/scripts/drupal.sh
+++ b/core/scripts/drupal.sh
@@ -93,7 +93,7 @@ while ($param = array_shift($_SERVER['argv'])) {
       break;
 
     default:
-      if (substr($param, 0, 2) == '--') {
+      if (substr($param, 0, 2) === '--') {
         // ignore unknown options
         break;
       }
diff --git a/core/scripts/dump-database-d6.sh b/core/scripts/dump-database-d6.sh
index d39bb43..6891db4 100644
--- a/core/scripts/dump-database-d6.sh
+++ b/core/scripts/dump-database-d6.sh
@@ -65,7 +65,7 @@ foreach ($schema as $table => $data) {
   $output .= "db_create_table('" . $table . "', " . drupal_var_export($data) . ");\n";
 
   // Don't output values for those tables.
-  if (substr($table, 0, 5) == 'cache' || $table == 'sessions' || $table == 'watchdog') {
+  if (substr($table, 0, 5) === 'cache' || $table === 'sessions' || $table === 'watchdog') {
     $output .= "\n";
     continue;
   }
@@ -77,7 +77,7 @@ foreach ($schema as $table => $data) {
     // users.uid is a serial and inserting 0 into a serial can break MySQL.
     // So record uid + 1 instead of uid for every uid and once all records
     // are in place, fix them up.
-    if ($table == 'users') {
+    if ($table === 'users') {
       $record['uid']++;
     }
     $insert .= '->values('. drupal_var_export($record) .")\n";
@@ -91,7 +91,7 @@ foreach ($schema as $table => $data) {
   }
 
   // Add the statement fixing the serial in the user table.
-  if ($table == 'users') {
+  if ($table === 'users') {
     $output .= "db_query('UPDATE {users} SET uid = uid - 1');\n";
   }
 
diff --git a/core/scripts/dump-database-d7.sh b/core/scripts/dump-database-d7.sh
index f78f998..31e3f28 100644
--- a/core/scripts/dump-database-d7.sh
+++ b/core/scripts/dump-database-d7.sh
@@ -65,7 +65,7 @@ foreach ($schema as $table => $data) {
   $output .= "db_create_table('" . $table . "', " . drupal_var_export($data) . ");\n";
 
   // Don't output values for those tables.
-  if (substr($table, 0, 5) == 'cache' || $table == 'sessions' || $table == 'watchdog') {
+  if (substr($table, 0, 5) === 'cache' || $table === 'sessions' || $table === 'watchdog') {
     $output .= "\n";
     continue;
   }
diff --git a/core/scripts/generate-d6-content.sh b/core/scripts/generate-d6-content.sh
index fc4c68f..1d4ddec 100644
--- a/core/scripts/generate-d6-content.sh
+++ b/core/scripts/generate-d6-content.sh
@@ -83,7 +83,7 @@ for ($i = 0; $i < 24; $i++) {
     $term['vid'] = $vocabulary['vid'];
     // For multiple parent vocabularies, omit the t0-t1 relation, otherwise
     // every parent in the vocabulary is a parent.
-    $term['parent'] = $vocabulary['hierarchy'] == 2 && i == 1 ? array() : $parents;
+    $term['parent'] = $vocabulary['hierarchy'] === 2 && i === 1 ? array() : $parents;
     ++$term_id;
     $term['name'] = "term $term_id of vocabulary $voc_id (j=$j)";
     $term['description'] = 'description of ' . $term['name'];
diff --git a/core/scripts/generate-d7-content.sh b/core/scripts/generate-d7-content.sh
index ccb0b46..f6d3f9e 100644
--- a/core/scripts/generate-d7-content.sh
+++ b/core/scripts/generate-d7-content.sh
@@ -145,7 +145,7 @@ for ($i = 0; $i < 24; $i++) {
       'vocabulary_machine_name' => $vocabulary->machine_name,
       // For multiple parent vocabularies, omit the t0-t1 relation, otherwise
       // every parent in the vocabulary is a parent.
-      'parent' => $vocabulary->hierarchy == 2 && i == 1 ? array() : $parents,
+      'parent' => $vocabulary->hierarchy === 2 && i === 1 ? array() : $parents,
       'name' => "term $term_id of vocabulary $voc_id (j=$j)",
       'description' => 'description of ' . $term->name,
       'format' => 'filtered_html',
diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index 5bf95fb..893dac7 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -11,7 +11,7 @@ const SIMPLETEST_SCRIPT_COLOR_EXCEPTION = 33; // Brown.
 // Set defaults and get overrides.
 list($args, $count) = simpletest_script_parse_args();
 
-if ($args['help'] || $count == 0) {
+if ($args['help'] || $count === 0) {
   simpletest_script_help();
   exit;
 }
@@ -277,7 +277,7 @@ function simpletest_script_init($server_software) {
 
     // If the passed URL schema is 'https' then setup the $_SERVER variables
     // properly so that testing will run under https.
-    if ($parsed_url['scheme'] == 'https') {
+    if ($parsed_url['scheme'] === 'https') {
       $_SERVER['HTTPS'] = 'on';
     }
   }
@@ -293,7 +293,7 @@ function simpletest_script_init($server_software) {
   $_SERVER['PHP_SELF'] = $path .'/index.php';
   $_SERVER['HTTP_USER_AGENT'] = 'Drupal command line';
 
-  if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
+  if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
     // Ensure that any and all environment variables are changed to https://.
     foreach ($_SERVER as $key => $value) {
       $_SERVER[$key] = str_replace('http://', 'https://', $_SERVER[$key]);
@@ -536,7 +536,7 @@ function simpletest_script_reporter_write_xml_results() {
       $case->setAttribute('name', $name);
 
       // Passes get no further attention, but failures and exceptions get to add more detail:
-      if ($result->status == 'fail') {
+      if ($result->status === 'fail') {
         $fail = $dom_document->createElement('failure');
         $fail->setAttribute('type', 'failure');
         $fail->setAttribute('message', $result->message_group);
@@ -544,7 +544,7 @@ function simpletest_script_reporter_write_xml_results() {
         $fail->appendChild($text);
         $case->appendChild($fail);
       }
-      elseif ($result->status == 'exception') {
+      elseif ($result->status === 'exception') {
         // In the case of an exception the $result->function may not be a class
         // method so we record the full function name:
         $case->setAttribute('name', $result->function);
diff --git a/core/themes/bartik/color/preview.js b/core/themes/bartik/color/preview.js
index 21f8075..ef6e813 100644
--- a/core/themes/bartik/color/preview.js
+++ b/core/themes/bartik/color/preview.js
@@ -8,7 +8,7 @@
         this.logoChanged = true;
       }
       // Remove the logo if the setting is toggled off. 
-      if (Drupal.settings.color.logo == null) {
+      if (Drupal.settings.color.logo === null) {
         $('div').remove('#preview-logo');
       }
 
diff --git a/core/themes/bartik/template.php b/core/themes/bartik/template.php
index 459a593..2c9b6b0 100644
--- a/core/themes/bartik/template.php
+++ b/core/themes/bartik/template.php
@@ -106,7 +106,7 @@ function bartik_process_maintenance_page(&$variables) {
  */
 function bartik_preprocess_block(&$variables) {
   // In the header region visually hide block titles.
-  if ($variables['block']->region == 'header') {
+  if ($variables['block']->region === 'header') {
     $variables['title_attributes_array']['class'][] = 'element-invisible';
   }
 }
@@ -130,7 +130,7 @@ function bartik_field__taxonomy_term_reference($variables) {
   }
 
   // Render the items.
-  $output .= ($variables['element']['#label_display'] == 'inline') ? '<ul class="links inline">' : '<ul class="links">';
+  $output .= ($variables['element']['#label_display'] === 'inline') ? '<ul class="links inline">' : '<ul class="links">';
   foreach ($variables['items'] as $delta => $item) {
     $output .= '<li class="taxonomy-term-reference-' . $delta . '"' . $variables['item_attributes'][$delta] . '>' . drupal_render($item) . '</li>';
   }
diff --git a/core/themes/bartik/templates/node.tpl.php b/core/themes/bartik/templates/node.tpl.php
index eb745a4..6f9a9ed 100644
--- a/core/themes/bartik/templates/node.tpl.php
+++ b/core/themes/bartik/templates/node.tpl.php
@@ -54,7 +54,7 @@
  *
  * Node status variables:
  * - $view_mode: View mode, e.g. 'full', 'teaser'...
- * - $teaser: Flag for the teaser state (shortcut for $view_mode == 'teaser').
+ * - $teaser: Flag for the teaser state (shortcut for $view_mode === 'teaser').
  * - $page: Flag for the full page state.
  * - $promote: Flag for front page promotion state.
  * - $sticky: Flags for sticky post setting.
diff --git a/core/themes/seven/template.php b/core/themes/seven/template.php
index 145ad22..63111a2 100644
--- a/core/themes/seven/template.php
+++ b/core/themes/seven/template.php
@@ -85,7 +85,7 @@ function seven_admin_block_content($variables) {
 function seven_tablesort_indicator($variables) {
   $style = $variables['style'];
   $theme_path = drupal_get_path('theme', 'seven');
-  if ($style == 'asc') {
+  if ($style === 'asc') {
     return theme('image', array('uri' => $theme_path . '/images/arrow-asc.png', 'alt' => t('sort ascending'), 'width' => 13, 'height' => 13, 'title' => t('sort ascending')));
   }
   else {
diff --git a/core/update.php b/core/update.php
index 3d858a2..dcba059 100644
--- a/core/update.php
+++ b/core/update.php
@@ -305,7 +305,7 @@ function update_access_allowed() {
     return user_access('administer software updates');
   }
   catch (Exception $e) {
-    return ($user->uid == 1);
+    return ($user->uid === 1);
   }
 }
 
@@ -353,7 +353,7 @@ function update_check_requirements($skip_warnings = FALSE) {
 
   // If there are errors, always display them. If there are only warnings, skip
   // them if the caller has indicated they should be skipped.
-  if ($severity == REQUIREMENT_ERROR || ($severity == REQUIREMENT_WARNING && !$skip_warnings)) {
+  if ($severity === REQUIREMENT_ERROR || ($severity === REQUIREMENT_WARNING && !$skip_warnings)) {
     update_task_list('requirements');
     drupal_set_title('Requirements problem');
     $status_report = theme('status_report', array('requirements' => $requirements));
@@ -454,13 +454,13 @@ if (update_access_allowed()) {
     // update.php ops.
 
     case 'selection':
-      if (isset($_GET['token']) && $_GET['token'] == drupal_get_token('update')) {
+      if (isset($_GET['token']) && $_GET['token'] === drupal_get_token('update')) {
         $output = update_selection_page();
         break;
       }
 
     case 'Apply pending updates':
-      if (isset($_GET['token']) && $_GET['token'] == drupal_get_token('update')) {
+      if (isset($_GET['token']) && $_GET['token'] === drupal_get_token('update')) {
         // Generate absolute URLs for the batch processing (using $base_root),
         // since the batch API will pass them to url() which does not handle
         // update.php correctly by default.
