diff --git a/core/cron.php b/core/cron.php
index fa9aa14..e08940a 100644
--- a/core/cron.php
+++ b/core/cron.php
@@ -16,7 +16,7 @@ define('DRUPAL_ROOT', getcwd());
 include_once DRUPAL_ROOT . '/core/includes/bootstrap.inc';
 drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
-if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') != $_GET['cron_key']) {
+if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') !== $_GET['cron_key']) {
   watchdog('cron', 'Cron could not run because an invalid key was used.', array(), WATCHDOG_NOTICE);
   drupal_access_denied();
 }
diff --git a/core/includes/actions.inc b/core/includes/actions.inc
index 75cda42..e77d6e3 100644
--- a/core/includes/actions.inc
+++ b/core/includes/actions.inc
@@ -240,7 +240,7 @@ function actions_function_lookup($hash) {
   // Check for a function name match.
   $actions_list = actions_list();
   foreach ($actions_list as $function => $array) {
-    if (drupal_hash_base64($function) == $hash) {
+    if (drupal_hash_base64($function) === $hash) {
       return $function;
     }
   }
@@ -248,7 +248,7 @@ function actions_function_lookup($hash) {
   // Must be a configurable action; check database.
   $result = db_query("SELECT aid FROM {actions} WHERE parameters <> ''")->fetchAll(PDO::FETCH_ASSOC);
   foreach ($result as $row) {
-    if (drupal_hash_base64($row['aid']) == $hash) {
+    if (drupal_hash_base64($row['aid']) === $hash) {
       $aid = $row['aid'];
       break;
     }
diff --git a/core/includes/ajax.inc b/core/includes/ajax.inc
index 8817356..cd2f4a1 100644
--- a/core/includes/ajax.inc
+++ b/core/includes/ajax.inc
@@ -520,7 +520,7 @@ function ajax_prepare_response($page_callback_result) {
         break;
     }
   }
-  elseif (is_array($page_callback_result) && isset($page_callback_result['#type']) && ($page_callback_result['#type'] == 'ajax')) {
+  elseif (is_array($page_callback_result) && isset($page_callback_result['#type']) && ($page_callback_result['#type'] === 'ajax')) {
     // Complex Ajax callbacks can return a result that contains an error message
     // or a specific set of commands to send to the browser.
     $page_callback_result += element_info('ajax');
@@ -564,7 +564,7 @@ function ajax_footer() {
   // Even for Ajax requests, invoke hook_exit() implementations. There may be
   // modules that need very fast Ajax responses, and therefore, run Ajax
   // requests with an early bootstrap.
-  if (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL && (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update')) {
+  if (drupal_get_bootstrap_phase() === DRUPAL_BOOTSTRAP_FULL && (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE !== 'update')) {
     module_invoke_all('exit');
   }
 
@@ -691,7 +691,7 @@ function ajax_pre_render_element($element) {
     );
 
     // @todo Legacy support. Remove in Drupal 8.
-    if (isset($settings['method']) && $settings['method'] == 'replace') {
+    if (isset($settings['method']) && $settings['method'] === 'replace') {
       $settings['method'] = 'replaceWith';
     }
 
diff --git a/core/includes/authorize.inc b/core/includes/authorize.inc
index cf55624..0cb7bd4 100644
--- a/core/includes/authorize.inc
+++ b/core/includes/authorize.inc
@@ -102,7 +102,7 @@ function authorize_filetransfer_form($form, &$form_state) {
     $form['connection_settings'][$name] += _authorize_filetransfer_connection_settings($name);
 
     // Start non-JS code.
-    if (isset($form_state['values']['connection_settings']['authorize_filetransfer_default']) && $form_state['values']['connection_settings']['authorize_filetransfer_default'] == $name) {
+    if (isset($form_state['values']['connection_settings']['authorize_filetransfer_default']) && $form_state['values']['connection_settings']['authorize_filetransfer_default'] === $name) {
 
       // If the user switches from JS to non-JS, Drupal (and Batch API) will
       // barf. This is a known bug: http://drupal.org/node/229825.
@@ -176,7 +176,7 @@ function _authorize_filetransfer_connection_settings($backend) {
 function _authorize_filetransfer_connection_settings_set_defaults(&$element, $key, array $defaults) {
   // If we're operating on a form element which isn't a fieldset, and we have
   // a default setting saved, stash it in #default_value.
-  if (!empty($key) && isset($defaults[$key]) && isset($element['#type']) && $element['#type'] != 'fieldset') {
+  if (!empty($key) && isset($defaults[$key]) && isset($element['#type']) && $element['#type'] !== 'fieldset') {
     $element['#default_value'] = $defaults[$key];
   }
   // Now, we walk through all the child elements, and recursively invoke
@@ -199,7 +199,7 @@ function _authorize_filetransfer_connection_settings_set_defaults(&$element, $ke
 function authorize_filetransfer_form_validate($form, &$form_state) {
   // Only validate the form if we have collected all of the user input and are
   // ready to proceed with updating or installing.
-  if ($form_state['triggering_element']['#name'] != 'process_updates') {
+  if ($form_state['triggering_element']['#name'] !== 'process_updates') {
     return;
   }
 
@@ -249,7 +249,7 @@ function authorize_filetransfer_form_submit($form, &$form_state) {
           // property. Otherwise, we store everything that's not explicitly
           // marked with #filetransfer_save set to FALSE.
           if (!isset($form['connection_settings'][$filetransfer_backend][$key]['#filetransfer_save'])) {
-            if ($form['connection_settings'][$filetransfer_backend][$key]['#type'] != 'password') {
+            if ($form['connection_settings'][$filetransfer_backend][$key]['#type'] !== 'password') {
               $connection_settings[$key] = $value;
             }
           }
diff --git a/core/includes/batch.inc b/core/includes/batch.inc
index 83ddd30..ddb957b 100644
--- a/core/includes/batch.inc
+++ b/core/includes/batch.inc
@@ -151,7 +151,7 @@ function _batch_progress_page_js() {
  */
 function _batch_do() {
   // HTTP POST required.
-  if ($_SERVER['REQUEST_METHOD'] != 'POST') {
+  if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
     drupal_set_message(t('HTTP POST is required.'), 'error');
     drupal_set_title(t('Error'));
     return '';
@@ -201,7 +201,7 @@ function _batch_progress_page_nojs() {
 
     // Perform actual processing.
     list($percentage, $message) = _batch_process($batch);
-    if ($percentage == 100) {
+    if ($percentage === 100) {
       $new_op = 'finished';
     }
 
@@ -389,7 +389,7 @@ function _batch_process() {
  * @see _batch_process()
  */
 function _batch_api_percentage($total, $current) {
-  if (!$total || $total == $current) {
+  if (!$total || $total === $current) {
     // If $total doesn't evaluate as true or is equal to the current set, then
     // we're finished, and we can return "100".
     $percentage = "100";
@@ -407,7 +407,7 @@ function _batch_api_percentage($total, $current) {
       // may be erroneously rounded up to 100%. To prevent that, we add one
       // more decimal place and try again.
       $decimal_places++;
-    } while ($percentage == '100');
+    } while ($percentage === '100');
   }
   return $percentage;
 }
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 12b1d80..0ad089f 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -529,7 +529,7 @@ function drupal_environment_initialize() {
   if (!isset($_SERVER['HTTP_REFERER'])) {
     $_SERVER['HTTP_REFERER'] = '';
   }
-  if (!isset($_SERVER['SERVER_PROTOCOL']) || ($_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.0' && $_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.1')) {
+  if (!isset($_SERVER['SERVER_PROTOCOL']) || ($_SERVER['SERVER_PROTOCOL'] !== 'HTTP/1.0' && $_SERVER['SERVER_PROTOCOL'] !== 'HTTP/1.1')) {
     $_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.0';
   }
 
@@ -605,7 +605,7 @@ function drupal_settings_initialize() {
   if (file_exists(DRUPAL_ROOT . '/' . conf_path() . '/settings.php')) {
     include_once DRUPAL_ROOT . '/' . conf_path() . '/settings.php';
   }
-  $is_https = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on';
+  $is_https = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) === 'on';
 
   if (isset($base_url)) {
     // Parse fixed base URL from settings.php.
@@ -631,7 +631,7 @@ function drupal_settings_initialize() {
       // Remove "core" directory if present, allowing install.php, update.php,
       // cron.php and others to auto-detect a base path.
       $core_position = strrpos($dir, '/core');
-      if ($core_position !== FALSE && strlen($dir) - 5 == $core_position) {
+      if ($core_position !== FALSE && strlen($dir) - 5 === $core_position) {
         $base_path = substr($dir, 0, $core_position);
       }
       else {
@@ -721,7 +721,7 @@ function drupal_get_filename($type, $name, $filename = NULL) {
   static $files = array(), $dirs = array();
 
   // Profiles are a special case: they have a fixed location and naming.
-  if ($type == 'profile') {
+  if ($type === 'profile') {
     $profile_filename = "profiles/$name/$name.profile";
     $files[$type][$name] = file_exists($profile_filename) ? $profile_filename : FALSE;
   }
@@ -758,11 +758,11 @@ function drupal_get_filename($type, $name, $filename = NULL) {
     if (!isset($files[$type][$name])) {
       // We have a consistent directory naming: modules, themes...
       $dir = $type . 's';
-      if ($type == 'theme_engine') {
+      if ($type === 'theme_engine') {
         $dir = 'themes/engines';
         $extension = 'engine';
       }
-      elseif ($type == 'theme') {
+      elseif ($type === 'theme') {
         $extension = 'info';
       }
       else {
@@ -949,7 +949,7 @@ function drupal_page_is_cacheable($allow_caching = NULL) {
     $allow_caching_static = $allow_caching;
   }
 
-  return $allow_caching_static && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD')
+  return $allow_caching_static && ($_SERVER['REQUEST_METHOD'] === 'GET' || $_SERVER['REQUEST_METHOD'] === 'HEAD')
     && !drupal_is_cli();
 }
 
@@ -1110,7 +1110,7 @@ function drupal_send_headers($default_headers = array(), $only_default = FALSE)
     }
   }
   foreach ($headers as $name_lower => $value) {
-    if ($name_lower == 'status') {
+    if ($name_lower === 'status') {
       header($_SERVER['SERVER_PROTOCOL'] . ' ' . $value);
     }
     // Skip headers that have been unset.
@@ -1216,8 +1216,8 @@ function drupal_serve_page_from_cache(stdClass $cache) {
   $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : FALSE;
 
   if ($if_modified_since && $if_none_match
-      && $if_none_match == $etag // etag must match
-      && $if_modified_since == $cache->created) {  // if-modified-since must match
+      && $if_none_match === $etag // etag must match
+      && $if_modified_since === $cache->created) {  // if-modified-since must match
     header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
     drupal_send_headers($default_headers);
     return;
@@ -1376,7 +1376,7 @@ function t($string, array $args = array(), array $options = array()) {
     $string = $custom_strings[$options['langcode']][$options['context']][$string];
   }
   // Translate with locale module if enabled.
-  elseif ($options['langcode'] != LANGUAGE_SYSTEM && ($options['langcode'] != 'en' || variable_get('locale_translate_english', FALSE)) && function_exists('locale')) {
+  elseif ($options['langcode'] !== LANGUAGE_SYSTEM && ($options['langcode'] !== 'en' || variable_get('locale_translate_english', FALSE)) && function_exists('locale')) {
     $string = locale($string, $options['context'], $options['langcode']);
   }
   if (empty($args)) {
@@ -1474,13 +1474,13 @@ function check_plain($text) {
  *   TRUE if the text is valid UTF-8, FALSE if not.
  */
 function drupal_validate_utf8($text) {
-  if (strlen($text) == 0) {
+  if (strlen($text) === 0) {
     return TRUE;
   }
   // With the PCRE_UTF8 modifier 'u', preg_match() fails silently on strings
   // containing invalid UTF-8 byte sequences. It does not reject character
   // codes above U+10FFFF (represented by 4 or more octets), though.
-  return (preg_match('/^./us', $text) == 1);
+  return (preg_match('/^./us', $text) === 1);
 }
 
 /**
@@ -1725,7 +1725,7 @@ function drupal_set_title($title = NULL, $output = CHECK_PLAIN) {
   $stored_title = &drupal_static(__FUNCTION__);
 
   if (isset($title)) {
-    $stored_title = ($output == PASS_THROUGH) ? $title : check_plain($title);
+    $stored_title = ($output === PASS_THROUGH) ? $title : check_plain($title);
   }
 
   return $stored_title;
@@ -2330,7 +2330,7 @@ function drupal_valid_test_ua() {
     $time_diff = REQUEST_TIME - $time;
     // Since we are making a local request a 5 second time window is allowed,
     // and the HMAC must match.
-    if ($time_diff >= 0 && $time_diff <= 5 && $hmac == drupal_hmac_base64($check_string, $key)) {
+    if ($time_diff >= 0 && $time_diff <= 5 && $hmac === drupal_hmac_base64($check_string, $key)) {
       $test_prefix = $prefix;
       return $test_prefix;
     }
@@ -2404,7 +2404,7 @@ function drupal_fast_404() {
  * Returns TRUE if a Drupal installation is currently being attempted.
  */
 function drupal_installation_attempted() {
-  return defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install';
+  return defined('MAINTENANCE_MODE') && MAINTENANCE_MODE === 'install';
 }
 
 /**
@@ -2531,7 +2531,7 @@ function language_list($only_enabled = FALSE) {
     // save the same object without data loss. Also fill in the filtered list
     // of enabled languages only.
     foreach ($languages['all'] as $langcode => $language) {
-      $languages['all'][$langcode]->default = ($langcode == $default->langcode);
+      $languages['all'][$langcode]->default = ($langcode === $default->langcode);
       if ($language->enabled) {
         $languages['enabled'][$langcode] = $languages['all'][$langcode];
       }
@@ -2565,7 +2565,7 @@ function language_load($langcode) {
  *   The printed name of the language.
  */
 function language_name($langcode) {
-  if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+  if ($langcode === LANGUAGE_NOT_SPECIFIED) {
     return t('None');
   }
 
@@ -2638,7 +2638,7 @@ function request_path() {
     // explicitly provided in the URL, or because the server added it to
     // $_SERVER['REQUEST_URI'] even when it wasn't provided in the URL (some
     // versions of Microsoft IIS do this), the front page should be served.
-    if ($path == basename($_SERVER['PHP_SELF'])) {
+    if ($path === basename($_SERVER['PHP_SELF'])) {
       $path = '';
     }
   }
@@ -2860,7 +2860,7 @@ function drupal_autoload_class($class) {
 function _registry_check_code($type, $name = NULL) {
   static $lookup_cache, $cache_update_needed;
 
-  if ($type == 'class' && class_exists($name) || $type == 'interface' && interface_exists($name)) {
+  if ($type === 'class' && class_exists($name) || $type === 'interface' && interface_exists($name)) {
     return TRUE;
   }
 
@@ -2873,7 +2873,7 @@ function _registry_check_code($type, $name = NULL) {
 
   // When we rebuild the registry, we need to reset this cache so
   // we don't keep lookups for resources that changed during the rebuild.
-  if ($type == REGISTRY_RESET_LOOKUP_CACHE) {
+  if ($type === REGISTRY_RESET_LOOKUP_CACHE) {
     $cache_update_needed = TRUE;
     $lookup_cache = NULL;
     return;
@@ -2881,7 +2881,7 @@ function _registry_check_code($type, $name = NULL) {
 
   // Called from drupal_page_footer, we write to permanent storage if there
   // changes to the lookup cache for this request.
-  if ($type == REGISTRY_WRITE_LOOKUP_CACHE) {
+  if ($type === REGISTRY_WRITE_LOOKUP_CACHE) {
     if ($cache_update_needed) {
       cache('bootstrap')->set('lookup_cache', $lookup_cache);
     }
@@ -3092,7 +3092,7 @@ function &drupal_static($name, $default_value = NULL, $reset = FALSE) {
     $default[$name] = $data[$name] = $default_value;
     return $data[$name];
   }
-  // Reset all: ($name == NULL). This needs to be done one at a time so that
+  // Reset all: ($name === NULL). This needs to be done one at a time so that
   // references returned by earlier invocations of drupal_static() also get
   // reset.
   foreach ($default as $name => $value) {
@@ -3117,7 +3117,7 @@ function drupal_static_reset($name = NULL) {
  * Detects whether the current script is running in a command-line environment.
  */
 function drupal_is_cli() {
-  return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
+  return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() === 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
 }
 
 /**
diff --git a/core/includes/common.inc b/core/includes/common.inc
index 5ff6167..91cfef4 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -519,7 +519,7 @@ function drupal_get_destination() {
   else {
     $path = $_GET['q'];
     $query = drupal_http_build_query(drupal_get_query_parameters());
-    if ($query != '') {
+    if ($query !== '') {
       $path .= '?' . $query;
     }
     $destination = array('destination' => $path);
@@ -772,7 +772,7 @@ function drupal_http_request($url, array $options = array()) {
   // Parse the URL and make sure we can handle the schema.
   $uri = @parse_url($url);
 
-  if ($uri == FALSE) {
+  if ($uri === FALSE) {
     $result->error = 'unable to parse URL';
     $result->code = -1001;
     return $result;
@@ -806,13 +806,13 @@ function drupal_http_request($url, array $options = array()) {
       // RFC 2616: "non-standard ports MUST, default ports MAY be included".
       // We don't add the standard port to prevent from breaking rewrite rules
       // checking the host that do not take into account the port number.
-      $options['headers']['Host'] = $uri['host'] . ($port != 80 ? ':' . $port : '');
+      $options['headers']['Host'] = $uri['host'] . ($port !== 80 ? ':' . $port : '');
       break;
     case 'https':
       // Note: Only works when PHP is compiled with OpenSSL support.
       $port = isset($uri['port']) ? $uri['port'] : 443;
       $socket = 'ssl://' . $uri['host'] . ':' . $port;
-      $options['headers']['Host'] = $uri['host'] . ($port != 443 ? ':' . $port : '');
+      $options['headers']['Host'] = $uri['host'] . ($port !== 443 ? ':' . $port : '');
       break;
     default:
       $result->error = 'invalid schema ' . $uri['scheme'];
@@ -860,7 +860,7 @@ function drupal_http_request($url, array $options = array()) {
   // at least HEAD/GET requests, and Squid always requires Content-Length in
   // POST/PUT requests.
   $content_length = strlen($options['data']);
-  if ($content_length > 0 || $options['method'] == 'POST' || $options['method'] == 'PUT') {
+  if ($content_length > 0 || $options['method'] === 'POST' || $options['method'] === 'PUT') {
     $options['headers']['Content-Length'] = $content_length;
   }
 
@@ -937,7 +937,7 @@ function drupal_http_request($url, array $options = array()) {
   while ($line = trim(array_shift($response))) {
     list($name, $value) = explode(':', $line, 2);
     $name = strtolower($name);
-    if (isset($result->headers[$name]) && $name == 'set-cookie') {
+    if (isset($result->headers[$name]) && $name === 'set-cookie') {
       // RFC 2109: the Set-Cookie response header comprises the token Set-
       // Cookie:, followed by a comma-separated list of one or more cookies.
       $result->headers[$name] .= ',' . trim($value);
@@ -1062,7 +1062,7 @@ function _fix_gpc_magic(&$item) {
  * @see http://php.net/manual/features.file-upload.php#42280
  */
 function _fix_gpc_magic_files(&$item, $key) {
-  if ($key != 'tmp_name') {
+  if ($key !== 'tmp_name') {
     if (is_array($item)) {
       array_walk($item, '_fix_gpc_magic_files');
     }
@@ -1333,7 +1333,7 @@ function drupal_strip_dangerous_protocols($uri) {
         $uri = substr($uri, $colonpos + 1);
       }
     }
-  } while ($before != $uri);
+  } while ($before !== $uri);
 
   return $uri;
 }
@@ -1457,11 +1457,11 @@ function _filter_xss_split($m, $store = FALSE) {
 
   $string = $m[1];
 
-  if (substr($string, 0, 1) != '<') {
+  if (substr($string, 0, 1) !== '<') {
     // We matched a lone ">" character.
     return '&gt;';
   }
-  elseif (strlen($string) == 1) {
+  elseif (strlen($string) === 1) {
     // We matched a lone "<" character.
     return '&lt;';
   }
@@ -1489,7 +1489,7 @@ function _filter_xss_split($m, $store = FALSE) {
     return $comment;
   }
 
-  if ($slash != '') {
+  if ($slash !== '') {
     return "</$elem>";
   }
 
@@ -1516,7 +1516,7 @@ function _filter_xss_attributes($attr) {
   $mode = 0;
   $attrname = '';
 
-  while (strlen($attr) != 0) {
+  while (strlen($attr) !== 0) {
     // Was the last operation successful?
     $working = 0;
 
@@ -1525,7 +1525,7 @@ function _filter_xss_attributes($attr) {
         // Attribute name, href for instance.
         if (preg_match('/^([-a-zA-Z]+)/', $attr, $match)) {
           $attrname = strtolower($match[1]);
-          $skip = ($attrname == 'style' || substr($attrname, 0, 2) == 'on');
+          $skip = ($attrname === 'style' || substr($attrname, 0, 2) === 'on');
           $working = $mode = 1;
           $attr = preg_replace('/^[-a-zA-Z]+/', '', $attr);
         }
@@ -1585,7 +1585,7 @@ function _filter_xss_attributes($attr) {
         break;
     }
 
-    if ($working == 0) {
+    if ($working === 0) {
       // Not well formed; remove and try again.
       $attr = preg_replace('/
         ^
@@ -1603,7 +1603,7 @@ function _filter_xss_attributes($attr) {
   }
 
   // The attribute list ends with a valueless attribute like "selected".
-  if ($mode == 1 && !$skip) {
+  if ($mode === 1 && !$skip) {
     $attrarr[] = $attrname;
   }
   return $attrarr;
@@ -1712,7 +1712,7 @@ function format_xml_elements($array) {
           $output .= drupal_attributes($value['attributes']);
         }
 
-        if (isset($value['value']) && $value['value'] != '') {
+        if (isset($value['value']) && $value['value'] !== '') {
           $output .= '>' . (is_array($value['value']) ? format_xml_elements($value['value']) : check_plain($value['value'])) . '</' . $value['key'] . ">\n";
         }
         else {
@@ -1781,14 +1781,14 @@ function format_plural($count, $singular, $plural, array $args = array(), array
   // Split joined translation strings into array.
   $translated_array = explode(LOCALE_PLURAL_DELIMITER, $translated_strings);
 
-  if ($count == 1) {
+  if ($count === 1) {
     return $translated_array[0];
   }
 
   // Get the plural index through the gettext formula.
   // @todo implement static variable to minimize function_exists() usage.
   $index = (function_exists('locale_get_plural')) ? locale_get_plural($count, isset($options['langcode']) ? $options['langcode'] : NULL) : -1;
-  if ($index == 0) {
+  if ($index === 0) {
     // Singular form.
     return $translated_array[0];
   }
@@ -1901,7 +1901,7 @@ function format_interval($interval, $granularity = 2, $langcode = NULL) {
       $granularity--;
     }
 
-    if ($granularity == 0) {
+    if ($granularity === 0) {
       break;
     }
   }
@@ -2005,7 +2005,7 @@ function format_date($timestamp, $type = 'medium', $format = '', $timezone = NUL
     case 'medium':
     default:
       // Retrieve the format of the custom $type passed.
-      if ($type != 'medium') {
+      if ($type !== 'medium') {
         $format = variable_get('date_format_' . $type, '');
       }
       // Fall back to 'medium'.
@@ -2076,11 +2076,11 @@ function _format_date_callback(array $matches = NULL, $new_langcode = NULL) {
       'langcode' => $langcode,
     );
 
-    if ($code == 'F') {
+    if ($code === 'F') {
       $options['context'] = 'Long month name';
     }
 
-    if ($code == '') {
+    if ($code === '') {
       $cache[$langcode][$code][$string] = $string;
     }
     else {
@@ -2174,7 +2174,7 @@ function url($path = NULL, array $options = array()) {
     // that would require another function call, and performance inside url() is
     // critical.
     $colonpos = strpos($path, ':');
-    $options['external'] = ($colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) == $path);
+    $options['external'] = ($colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) === $path);
   }
 
   // Preserve the original path before altering or aliasing.
@@ -2232,13 +2232,13 @@ function url($path = NULL, array $options = array()) {
   }
 
   // The special path '<front>' links to the default front page.
-  if ($path == '<front>') {
+  if ($path === '<front>') {
     $path = '';
   }
   elseif (!empty($path) && !$options['alias']) {
     $langcode = isset($options['language']) && isset($options['language']->langcode) ? $options['language']->langcode : '';
     $alias = drupal_get_path_alias($original_path, $langcode);
-    if ($alias != $original_path) {
+    if ($alias !== $original_path) {
       $path = $alias;
     }
   }
@@ -2292,7 +2292,7 @@ function url_is_external($path) {
   // Avoid calling drupal_strip_dangerous_protocols() if there is any
   // slash (/), hash (#) or question_mark (?) before the colon (:)
   // occurrence - if any - as this would clearly mean it is not a URL.
-  return $colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) == $path;
+  return $colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) === $path;
 }
 
 /**
@@ -2408,8 +2408,8 @@ function l($text, $path, array $options = array()) {
   );
 
   // Append active class.
-  if (($path == $_GET['q'] || ($path == '<front>' && drupal_is_front_page())) &&
-      (empty($options['language']) || $options['language']->langcode == $language_url->langcode)) {
+  if (($path === $_GET['q'] || ($path === '<front>' && drupal_is_front_page())) &&
+      (empty($options['language']) || $options['language']->langcode === $language_url->langcode)) {
     $options['attributes']['class'][] = 'active';
   }
 
@@ -2438,7 +2438,7 @@ function l($text, $path, array $options = array()) {
       // the overriding of theme_link() with an alternate function or template,
       // the presence of preprocess or process functions, or the presence of
       // include files.
-      $use_theme = !isset($registry['link']['function']) || ($registry['link']['function'] != 'theme_link');
+      $use_theme = !isset($registry['link']['function']) || ($registry['link']['function'] !== 'theme_link');
       $use_theme = $use_theme || !empty($registry['link']['preprocess functions']) || !empty($registry['link']['process functions']) || !empty($registry['link']['includes']);
     }
     else {
@@ -2588,14 +2588,14 @@ function drupal_deliver_html_page($page_callback_result) {
         }
 
         $path = drupal_get_normal_path(variable_get('site_404', ''));
-        if ($path && $path != $_GET['q']) {
+        if ($path && $path !== $_GET['q']) {
           // Custom 404 handler. Set the active item in case there are tabs to
           // display, or other dependencies on the path.
           menu_set_active_item($path);
           $return = menu_execute_active_handler($path, FALSE);
         }
 
-        if (empty($return) || $return == MENU_NOT_FOUND || $return == MENU_ACCESS_DENIED) {
+        if (empty($return) || $return === MENU_NOT_FOUND || $return === MENU_ACCESS_DENIED) {
           // Standard 404 handler.
           drupal_set_title(t('Page not found'));
           $return = t('The requested page "@path" could not be found.', array('@path' => request_uri()));
@@ -2617,14 +2617,14 @@ function drupal_deliver_html_page($page_callback_result) {
         }
 
         $path = drupal_get_normal_path(variable_get('site_403', ''));
-        if ($path && $path != $_GET['q']) {
+        if ($path && $path !== $_GET['q']) {
           // Custom 403 handler. Set the active item in case there are tabs to
           // display or other dependencies on the path.
           menu_set_active_item($path);
           $return = menu_execute_active_handler($path, FALSE);
         }
 
-        if (empty($return) || $return == MENU_NOT_FOUND || $return == MENU_ACCESS_DENIED) {
+        if (empty($return) || $return === MENU_NOT_FOUND || $return === MENU_ACCESS_DENIED) {
           // Standard 403 handler.
           drupal_set_title(t('Access denied'));
           $return = t('You are not authorized to access this page.');
@@ -2694,8 +2694,8 @@ function drupal_page_footer() {
  *   This should be passed along to hook_exit() implementations.
  */
 function drupal_exit($destination = NULL) {
-  if (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL) {
-    if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update') {
+  if (drupal_get_bootstrap_phase() === DRUPAL_BOOTSTRAP_FULL) {
+    if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE !== 'update') {
       module_invoke_all('exit', $destination);
     }
     drupal_session_commit();
@@ -3052,7 +3052,7 @@ function drupal_get_css($css = NULL, $skip_alter = FALSE) {
   // Remove the overridden CSS files. Later CSS files override former ones.
   $previous_item = array();
   foreach ($css as $key => $item) {
-    if ($item['type'] == 'file') {
+    if ($item['type'] === 'file') {
       // If defined, force a unique basename for this file.
       $basename = isset($item['basename']) ? $item['basename'] : drupal_basename($item['data']);
       if (isset($previous_item[$basename])) {
@@ -3533,7 +3533,7 @@ function drupal_build_css_cache($css) {
     // Build aggregate CSS file.
     foreach ($css as $stylesheet) {
       // Only 'file' stylesheets can be aggregated.
-      if ($stylesheet['type'] == 'file') {
+      if ($stylesheet['type'] === 'file') {
         $contents = drupal_load_stylesheet($stylesheet['data'], TRUE);
 
         // Build the base URL of this CSS file: start with the full URL.
@@ -3542,7 +3542,7 @@ function drupal_build_css_cache($css) {
         $css_base_url = substr($css_base_url, 0, strrpos($css_base_url, '/'));
         // Simplify to a relative URL if the stylesheet URL starts with the
         // base URL of the website.
-        if (substr($css_base_url, 0, strlen($GLOBALS['base_root'])) == $GLOBALS['base_root']) {
+        if (substr($css_base_url, 0, strlen($GLOBALS['base_root'])) === $GLOBALS['base_root']) {
           $css_base_url = substr($css_base_url, strlen($GLOBALS['base_root']));
         }
 
@@ -3599,7 +3599,7 @@ function _drupal_build_css_path($matches, $base = NULL) {
   // Prefix with base and remove '../' segments where possible.
   $path = $_base . $matches[1];
   $last = '';
-  while ($path != $last) {
+  while ($path !== $last) {
     $last = $path;
     $path = preg_replace('`(^|/)(?!\.\./)([^/]+)/\.\./`', '$1', $path);
   }
@@ -3734,7 +3734,7 @@ function _drupal_load_stylesheet($matches) {
   $directory = dirname($filename);
   // If the file is in the current directory, make sure '.' doesn't appear in
   // the url() path.
-  $directory = $directory == '.' ? '' : $directory .'/';
+  $directory = $directory === '.' ? '' : $directory .'/';
 
   // Alter all internal url() paths. Leave external paths alone. We don't need
   // to normalize absolute paths here (i.e. remove folder/... segments) because
@@ -4235,7 +4235,7 @@ function drupal_get_js($scope = 'header', $javascript = NULL, $skip_alter = FALS
   // Filter out elements of the given scope.
   $items = array();
   foreach ($javascript as $key => $item) {
-    if ($item['scope'] == $scope) {
+    if ($item['scope'] === $scope) {
       $items[$key] = $item;
     }
   }
@@ -4255,7 +4255,7 @@ function drupal_get_js($scope = 'header', $javascript = NULL, $skip_alter = FALS
   // because drupal_get_js() was intentionally passed a $javascript argument
   // stripped of settings, potentially in order to override how settings get
   // output, so in this case, do not add the setting to this output.
-  if ($scope == 'header' && isset($items['settings'])) {
+  if ($scope === 'header' && isset($items['settings'])) {
     $items['settings']['data'][] = $setting;
   }
 
@@ -4334,7 +4334,7 @@ function drupal_pre_render_scripts($elements) {
     // If a group of files has been aggregated into a single file,
     // $group['data'] contains the URI of the aggregate file. Add a single
     // script element for this file.
-    if ($group['type'] == 'file' && isset($group['data'])) {
+    if ($group['type'] === 'file' && isset($group['data'])) {
       $element = $element_defaults;
       $element['#attributes']['src'] = file_create_url($group['data']);
       $element['#browsers'] = $group['browsers'];
@@ -4497,7 +4497,7 @@ function drupal_aggregate_js(&$js_groups) {
 
   if ($preprocess_js) {
     foreach ($js_groups as $key => $group) {
-      if ($group['type'] == 'file' && $group['preprocess']) {
+      if ($group['type'] === 'file' && $group['preprocess']) {
         $js_groups[$key]['data'] = drupal_build_js_cache($group['items']);
       }
     }
@@ -5168,7 +5168,7 @@ function drupal_get_token($value = '') {
  */
 function drupal_valid_token($token, $value = '', $skip_anonymous = FALSE) {
   global $user;
-  return (($skip_anonymous && $user->uid == 0) || ($token == drupal_get_token($value)));
+  return (($skip_anonymous && $user->uid === 0) || ($token === drupal_get_token($value)));
 }
 
 function _drupal_bootstrap_full() {
@@ -5216,7 +5216,7 @@ function _drupal_bootstrap_full() {
 
   // Let all modules take action before the menu system handles the request.
   // We do not want this while running update.php.
-  if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update') {
+  if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE !== 'update') {
     // Prior to invoking hook_init(), initialize the theme (potentially a custom
     // one for this page), so that:
     // - Modules with hook_init() implementations that call theme() or
@@ -5264,7 +5264,7 @@ function drupal_page_set_cache() {
     $header_names = _drupal_set_preferred_header_name();
     foreach (drupal_get_http_header() as $name_lower => $value) {
       $cache->data['headers'][$header_names[$name_lower]] = $value;
-      if ($name_lower == 'expires') {
+      if ($name_lower === 'expires') {
         // Use the actual timestamp from an Expires header if available.
         $cache->expire = strtotime($value);
       }
@@ -5443,7 +5443,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1)
   // test runs are triggered).
   if (drupal_valid_test_ua()) {
     $testing_profile = variable_get('simpletest_parent_profile', FALSE);
-    if ($testing_profile && $testing_profile != $profile) {
+    if ($testing_profile && $testing_profile !== $profile) {
       $profiles[] = $testing_profile;
     }
   }
@@ -5487,7 +5487,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1)
         // If the module or theme is incompatible with Drupal core, remove it
         // from the array for the current search directory, so it is not
         // overwritten when merged with the $files array.
-        if (isset($info['core']) && $info['core'] != DRUPAL_CORE_COMPATIBILITY) {
+        if (isset($info['core']) && $info['core'] !== DRUPAL_CORE_COMPATIBILITY) {
           unset($files_to_add[$file_key]);
         }
       }
@@ -5791,7 +5791,7 @@ function drupal_render_page($page) {
   // Allow menu callbacks to return strings or arbitrary arrays to render.
   // If the array returned is not of #type page directly, we need to fill
   // in the page with defaults.
-  if (is_string($page) || (is_array($page) && (!isset($page['#type']) || ($page['#type'] != 'page')))) {
+  if (is_string($page) || (is_array($page) && (!isset($page['#type']) || ($page['#type'] !== 'page')))) {
     drupal_set_page_content($page);
     $page = element_info('page');
   }
@@ -5952,7 +5952,7 @@ function drupal_render(&$elements) {
   // If #theme was not set and the element has children, render them now.
   // This is the same process as drupal_render_children() but is inlined
   // for speed.
-  if ($elements['#children'] == '') {
+  if ($elements['#children'] === '') {
     foreach ($children as $key) {
       $elements['#children'] .= drupal_render($elements[$key]);
     }
@@ -6346,7 +6346,7 @@ function drupal_render_cid_create($elements) {
 function element_sort($a, $b) {
   $a_weight = (is_array($a) && isset($a['#weight'])) ? $a['#weight'] : 0;
   $b_weight = (is_array($b) && isset($b['#weight'])) ? $b['#weight'] : 0;
-  if ($a_weight == $b_weight) {
+  if ($a_weight === $b_weight) {
     return 0;
   }
   return ($a_weight < $b_weight) ? -1 : 1;
@@ -6431,7 +6431,7 @@ function element_info_property($type, $property_name, $default = NULL) {
 function drupal_sort_weight($a, $b) {
   $a_weight = (is_array($a) && isset($a['weight'])) ? $a['weight'] : 0;
   $b_weight = (is_array($b) && isset($b['weight'])) ? $b['weight'] : 0;
-  if ($a_weight == $b_weight) {
+  if ($a_weight === $b_weight) {
     return 0;
   }
   return ($a_weight < $b_weight) ? -1 : 1;
@@ -6462,7 +6462,7 @@ function drupal_sort_title($a, $b) {
  * Checks if the key is a property.
  */
 function element_property($key) {
-  return $key[0] == '#';
+  return $key[0] === '#';
 }
 
 /**
@@ -6476,7 +6476,7 @@ function element_properties($element) {
  * Checks if the key is a child.
  */
 function element_child($key) {
-  return !isset($key[0]) || $key[0] != '#';
+  return !isset($key[0]) || $key[0] !== '#';
 }
 
 /**
@@ -7182,7 +7182,7 @@ function drupal_parse_info_format($data) {
 
       // Create nested arrays.
       foreach ($keys as $key) {
-        if ($key == '') {
+        if ($key === '') {
           $key = count($parent);
         }
         if (!isset($parent[$key]) || !is_array($parent[$key])) {
@@ -7197,7 +7197,7 @@ function drupal_parse_info_format($data) {
       }
 
       // Insert actual value.
-      if ($last == '') {
+      if ($last === '') {
         $last = count($parent);
       }
       $parent[$last] = $value;
@@ -7249,7 +7249,7 @@ function drupal_explode_tags($tags) {
     // or includes a comma or quote character), we remove the escape
     // formatting so to save the term into the database as the user intends.
     $tag = trim(str_replace('""', '"', preg_replace('/^"(.*)"$/', '\1', $tag)));
-    if ($tag != "") {
+    if ($tag !== "") {
       $tags[] = $tag;
     }
   }
@@ -7370,7 +7370,7 @@ function debug($data, $label = NULL, $print_r = FALSE) {
  *   - 'original_version' contains the original version string (which can be
  *     used in the UI for reporting incompatibilities).
  *   - 'versions' is a list of associative arrays, each containing the keys
- *     'op' and 'version'. 'op' can be one of: '=', '==', '!=', '<>', '<',
+ *     'op' and 'version'. 'op' can be one of: '=', '===', '!=', '<>', '<',
  *     '<=', '>', or '>='. 'version' is one piece like '4.5-beta3'.
  *   Callers should pass this structure to drupal_check_incompatibility().
  *
@@ -7379,7 +7379,7 @@ function debug($data, $label = NULL, $print_r = FALSE) {
 function drupal_parse_dependency($dependency) {
   // We use named subpatterns and support every op that version_compare
   // supports. Also, op is optional and defaults to equals.
-  $p_op = '(?P<operation>!=|==|=|<|<=|>|>=|<>)?';
+  $p_op = '(?P<operation>!=|===|=|<|<=|>|>=|<>)?';
   // Core version is always optional: 8.x-2.x and 2.x is treated the same.
   $p_core = '(?:' . preg_quote(DRUPAL_CORE_COMPATIBILITY) . '-)?';
   $p_major = '(?P<major>\d+)';
@@ -7393,18 +7393,18 @@ function drupal_parse_dependency($dependency) {
     foreach (explode(',', $parts[1]) as $version) {
       if (preg_match("/^\s*$p_op\s*$p_core$p_major\.$p_minor/", $version, $matches)) {
         $op = !empty($matches['operation']) ? $matches['operation'] : '=';
-        if ($matches['minor'] == 'x') {
+        if ($matches['minor'] === 'x') {
           // Drupal considers "2.x" to mean any version that begins with
           // "2" (e.g. 2.0, 2.9 are all "2.x"). PHP's version_compare(),
           // on the other hand, treats "x" as a string; so to
           // version_compare(), "2.x" is considered less than 2.0. This
           // means that >=2.x and <2.x are handled by version_compare()
           // as we need, but > and <= are not.
-          if ($op == '>' || $op == '<=') {
+          if ($op === '>' || $op === '<=') {
             $matches['major']++;
           }
           // Equivalence can be checked by adding two restrictions.
-          if ($op == '=' || $op == '==') {
+          if ($op === '=' || $op === '===') {
             $value['versions'][] = array('op' => '<', 'version' => ($matches['major'] + 1) . '.x');
             $op = '>=';
           }
diff --git a/core/includes/database.inc b/core/includes/database.inc
index c2df949..3b3eff2 100644
--- a/core/includes/database.inc
+++ b/core/includes/database.inc
@@ -161,7 +161,7 @@ use Drupal\Core\Database\Query\Condition;
  * function my_other_function($id) {
  *   // The transaction is still open here.
  *
- *   if ($id % 2 == 0) {
+ *   if ($id % 2 === 0) {
  *     db_update('example')
  *       ->condition('id', $id)
  *       ->fields(array('field2' => 10))
@@ -289,7 +289,7 @@ function db_query_temporary($query, array $args = array(), array $options = arra
  *   A new InsertQuery object for this connection.
  */
 function db_insert($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->insert($table, $options);
@@ -307,7 +307,7 @@ function db_insert($table, array $options = array()) {
  *   A new MergeQuery object for this connection.
  */
 function db_merge($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->merge($table, $options);
@@ -325,7 +325,7 @@ function db_merge($table, array $options = array()) {
  *   A new UpdateQuery object for this connection.
  */
 function db_update($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->update($table, $options);
@@ -343,7 +343,7 @@ function db_update($table, array $options = array()) {
  *   A new DeleteQuery object for this connection.
  */
 function db_delete($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->delete($table, $options);
@@ -361,7 +361,7 @@ function db_delete($table, array $options = array()) {
  *   A new TruncateQuery object for this connection.
  */
 function db_truncate($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->truncate($table, $options);
diff --git a/core/includes/errors.inc b/core/includes/errors.inc
index 0524170..362e001 100644
--- a/core/includes/errors.inc
+++ b/core/includes/errors.inc
@@ -85,7 +85,7 @@ function _drupal_error_handler_real($error_level, $message, $filename, $line, $c
       '%file' => $caller['file'],
       '%line' => $caller['line'],
       'severity_level' => $severity_level,
-    ), $error_level == E_RECOVERABLE_ERROR);
+    ), $error_level === E_RECOVERABLE_ERROR);
   }
 }
 
@@ -164,10 +164,10 @@ function _drupal_render_exception_safe($exception) {
  */
 function error_displayable($error = NULL) {
   $error_level = variable_get('error_level', ERROR_REPORTING_DISPLAY_ALL);
-  $updating = (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'update');
-  $all_errors_displayed = ($error_level == ERROR_REPORTING_DISPLAY_ALL);
-  $error_needs_display = ($error_level == ERROR_REPORTING_DISPLAY_SOME &&
-    isset($error) && $error['%type'] != 'Notice' && $error['%type'] != 'Strict warning');
+  $updating = (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE === 'update');
+  $all_errors_displayed = ($error_level === ERROR_REPORTING_DISPLAY_ALL);
+  $error_needs_display = ($error_level === ERROR_REPORTING_DISPLAY_SOME &&
+    isset($error) && $error['%type'] !== 'Notice' && $error['%type'] !== 'Strict warning');
 
   return ($updating || $all_errors_displayed || $error_needs_display);
 }
@@ -185,7 +185,7 @@ function error_displayable($error = NULL) {
 function _drupal_log_error($error, $fatal = FALSE) {
   // Initialize a maintenance theme if the boostrap was not complete.
   // Do it early because drupal_set_message() triggers a drupal_theme_initialize().
-  if ($fatal && (drupal_get_bootstrap_phase() != DRUPAL_BOOTSTRAP_FULL)) {
+  if ($fatal && (drupal_get_bootstrap_phase() !== DRUPAL_BOOTSTRAP_FULL)) {
     unset($GLOBALS['theme']);
     if (!defined('MAINTENANCE_MODE')) {
       define('MAINTENANCE_MODE', 'error');
@@ -227,7 +227,7 @@ function _drupal_log_error($error, $fatal = FALSE) {
     }
   }
 
-  if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
+  if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') {
     if ($fatal) {
       // When called from JavaScript, simply output the error message.
       print t('%type: !message in %function (line %line of %file).', $error);
@@ -242,7 +242,7 @@ function _drupal_log_error($error, $fatal = FALSE) {
 
       // If error type is 'User notice' then treat it as debug information
       // instead of an error message, see dd().
-      if ($error['%type'] == 'User notice') {
+      if ($error['%type'] === 'User notice') {
         $error['%type'] = 'Debug';
         $class = 'status';
       }
diff --git a/core/includes/file.inc b/core/includes/file.inc
index eaff634..618a021 100644
--- a/core/includes/file.inc
+++ b/core/includes/file.inc
@@ -206,7 +206,7 @@ function file_get_stream_wrappers($filter = STREAM_WRAPPERS_ALL) {
         else {
           $wrappers[$scheme]['override'] = FALSE;
         }
-        if (($info['type'] & STREAM_WRAPPERS_LOCAL) == STREAM_WRAPPERS_LOCAL) {
+        if (($info['type'] & STREAM_WRAPPERS_LOCAL) === STREAM_WRAPPERS_LOCAL) {
           stream_wrapper_register($scheme, $info['class']);
         }
         else {
@@ -215,7 +215,7 @@ function file_get_stream_wrappers($filter = STREAM_WRAPPERS_ALL) {
       }
       // Pre-populate the static cache with the filters most typically used.
       $wrappers_storage[STREAM_WRAPPERS_ALL][$scheme] = $wrappers[$scheme];
-      if (($info['type'] & STREAM_WRAPPERS_WRITE_VISIBLE) == STREAM_WRAPPERS_WRITE_VISIBLE) {
+      if (($info['type'] & STREAM_WRAPPERS_WRITE_VISIBLE) === STREAM_WRAPPERS_WRITE_VISIBLE) {
         $wrappers_storage[STREAM_WRAPPERS_WRITE_VISIBLE][$scheme] = $wrappers[$scheme];
       }
     }
@@ -225,7 +225,7 @@ function file_get_stream_wrappers($filter = STREAM_WRAPPERS_ALL) {
     $wrappers_storage[$filter] = array();
     foreach ($wrappers_storage[STREAM_WRAPPERS_ALL] as $scheme => $info) {
       // Bit-wise filter.
-      if (($info['type'] & $filter) == $filter) {
+      if (($info['type'] & $filter) === $filter) {
         $wrappers_storage[$filter][$scheme] = $info;
       }
     }
@@ -308,7 +308,7 @@ function file_uri_target($uri) {
   $data = explode('://', $uri, 2);
 
   // Remove erroneous leading or trailing, forward-slashes and backslashes.
-  return count($data) == 2 ? trim($data[1], '\/') : FALSE;
+  return count($data) === 2 ? trim($data[1], '\/') : FALSE;
 }
 
 /**
@@ -452,7 +452,7 @@ function file_create_url($uri) {
     //   HTTP and to https://example.com/bar.jpg when viewing a HTTPS page)
     // Both types of relative URIs are characterized by a leading slash, hence
     // we can use a single check.
-    if (drupal_substr($uri, 0, 1) == '/') {
+    if (drupal_substr($uri, 0, 1) === '/') {
       return $uri;
     }
     else {
@@ -461,7 +461,7 @@ function file_create_url($uri) {
       return $GLOBALS['base_url'] . '/' . drupal_encode_path($uri);
     }
   }
-  elseif ($scheme == 'http' || $scheme == 'https') {
+  elseif ($scheme === 'http' || $scheme === 'https') {
     // Check for http so that we don't have to implement getExternalUrl() for
     // the http wrapper.
     return $uri;
@@ -841,7 +841,7 @@ function file_copy(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     $file->uri = $uri;
     $file->filename = drupal_basename($uri);
     // If we are replacing an existing file re-use its database record.
-    if ($replace == FILE_EXISTS_REPLACE) {
+    if ($replace === FILE_EXISTS_REPLACE) {
       $existing_files = file_load_multiple(array(), array('uri' => $uri));
       if (count($existing_files)) {
         $existing = reset($existing_files);
@@ -851,7 +851,7 @@ function file_copy(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     }
     // If we are renaming around an existing file (rather than a directory),
     // use its basename for the filename.
-    elseif ($replace == FILE_EXISTS_RENAME && is_file($destination)) {
+    elseif ($replace === FILE_EXISTS_RENAME && is_file($destination)) {
       $file->filename = drupal_basename($destination);
     }
 
@@ -971,7 +971,7 @@ function file_unmanaged_copy($source, $destination = NULL, $replace = FILE_EXIST
   // Assert that the source and destination filenames are not the same.
   $real_source = drupal_realpath($source);
   $real_destination = drupal_realpath($destination);
-  if ($source == $destination || ($real_source !== FALSE) && ($real_source == $real_destination)) {
+  if ($source === $destination || ($real_source !== FALSE) && ($real_source === $real_destination)) {
     drupal_set_message(t('The specified file %file was not copied because it would overwrite itself.', array('%file' => $source)), 'error');
     watchdog('file', 'File %file could not be copied because it would overwrite itself.', array('%file' => $source));
     return FALSE;
@@ -1090,7 +1090,7 @@ function file_move(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     $file = clone $source;
     $file->uri = $uri;
     // If we are replacing an existing file re-use its database record.
-    if ($replace == FILE_EXISTS_REPLACE) {
+    if ($replace === FILE_EXISTS_REPLACE) {
       $existing_files = file_load_multiple(array(), array('uri' => $uri));
       if (count($existing_files)) {
         $existing = reset($existing_files);
@@ -1100,7 +1100,7 @@ function file_move(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     }
     // If we are renaming around an existing file (rather than a directory),
     // use its basename for the filename.
-    elseif ($replace == FILE_EXISTS_RENAME && is_file($destination)) {
+    elseif ($replace === FILE_EXISTS_RENAME && is_file($destination)) {
       $file->filename = drupal_basename($destination);
     }
 
@@ -1142,7 +1142,7 @@ function file_move(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
  */
 function file_unmanaged_move($source, $destination = NULL, $replace = FILE_EXISTS_RENAME) {
   $filepath = file_unmanaged_copy($source, $destination, $replace);
-  if ($filepath == FALSE || file_unmanaged_delete($source) == FALSE) {
+  if ($filepath === FALSE || file_unmanaged_delete($source) === FALSE) {
     return FALSE;
   }
   return $filepath;
@@ -1204,7 +1204,7 @@ function file_munge_filename($filename, $extensions, $alerts = TRUE) {
     }
     $filename = $new_filename . '.' . $final_extension;
 
-    if ($alerts && $original != $filename) {
+    if ($alerts && $original !== $filename) {
       drupal_set_message(t('For security reasons, your upload has been renamed to %filename.', array('%filename' => $filename)));
     }
   }
@@ -1244,13 +1244,13 @@ function file_create_filename($basename, $directory) {
   // Strip control characters (ASCII value < 32). Though these are allowed in
   // some filesystems, not many applications handle them well.
   $basename = preg_replace('/[\x00-\x1F]/u', '_', $basename);
-  if (substr(PHP_OS, 0, 3) == 'WIN') {
+  if (substr(PHP_OS, 0, 3) === 'WIN') {
     // These characters are not allowed in Windows filenames
     $basename = str_replace(array(':', '*', '?', '"', '<', '>', '|'), '_', $basename);
   }
 
   // A URI or path may already have a trailing slash or look like "public://".
-  if (substr($directory, -1) == '/') {
+  if (substr($directory, -1) === '/') {
     $separator = '';
   }
   else {
@@ -1402,7 +1402,7 @@ function file_unmanaged_delete_recursive($path) {
   if (is_dir($path)) {
     $dir = dir($path);
     while (($entry = $dir->read()) !== FALSE) {
-      if ($entry == '.' || $entry == '..') {
+      if ($entry === '.' || $entry === '..') {
         continue;
       }
       $entry_path = $path . '/' . $entry;
@@ -1559,7 +1559,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
   // rename filename.php.foo and filename.php to filename.php.foo.txt and
   // filename.php.txt, respectively). Don't rename if 'allow_insecure_uploads'
   // evaluates to TRUE.
-  if (!variable_get('allow_insecure_uploads', 0) && preg_match('/\.(php|pl|py|cgi|asp|js)(\.|$)/i', $file->filename) && (substr($file->filename, -4) != '.txt')) {
+  if (!variable_get('allow_insecure_uploads', 0) && preg_match('/\.(php|pl|py|cgi|asp|js)(\.|$)/i', $file->filename) && (substr($file->filename, -4) !== '.txt')) {
     $file->filemime = 'text/plain';
     $file->uri .= '.txt';
     $file->filename .= '.txt';
@@ -1585,11 +1585,11 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
 
   $file->source = $source;
   // A URI may already have a trailing slash or look like "public://".
-  if (substr($destination, -1) != '/') {
+  if (substr($destination, -1) !== '/') {
     $destination .= '/';
   }
   $file->destination = file_destination($destination . $file->filename, $replace);
-  // If file_destination() returns FALSE then $replace == FILE_EXISTS_ERROR and
+  // If file_destination() returns FALSE then $replace === FILE_EXISTS_ERROR and
   // there's an existing file so we need to bail.
   if ($file->destination === FALSE) {
     drupal_set_message(t('The file %source could not be uploaded because a file by that name already exists in the destination %directory.', array('%source' => $source, '%directory' => $destination)), 'error');
@@ -1629,7 +1629,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
   drupal_chmod($file->uri);
 
   // If we are replacing an existing file re-use its database record.
-  if ($replace == FILE_EXISTS_REPLACE) {
+  if ($replace === FILE_EXISTS_REPLACE) {
     $existing_files = file_load_multiple(array(), array('uri' => $file->uri));
     if (count($existing_files)) {
       $existing = reset($existing_files);
@@ -1789,7 +1789,7 @@ function file_validate_size(stdClass $file, $file_limit = 0, $user_limit = 0) {
   $errors = array();
 
   // Bypass validation for uid  = 1.
-  if ($user->uid != 1) {
+  if ($user->uid !== 1) {
     if ($file_limit && $file->filesize > $file_limit) {
       $errors[] = t('The file is %filesize exceeding the maximum file size of %maxsize.', array('%filesize' => format_size($file->filesize), '%maxsize' => format_size($file_limit)));
     }
@@ -1927,7 +1927,7 @@ function file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAM
     $file->uid      = $user->uid;
     $file->status   = FILE_STATUS_PERMANENT;
     // If we are replacing an existing file re-use its database record.
-    if ($replace == FILE_EXISTS_REPLACE) {
+    if ($replace === FILE_EXISTS_REPLACE) {
       $existing_files = file_load_multiple(array(), array('uri' => $uri));
       if (count($existing_files)) {
         $existing = reset($existing_files);
@@ -1937,7 +1937,7 @@ function file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAM
     }
     // If we are renaming around an existing file (rather than a directory),
     // use its basename for the filename.
-    elseif ($replace == FILE_EXISTS_RENAME && is_file($destination)) {
+    elseif ($replace === FILE_EXISTS_RENAME && is_file($destination)) {
       $file->filename = drupal_basename($destination);
     }
 
@@ -2045,7 +2045,7 @@ function file_download() {
     foreach (module_implements('file_download') as $module) {
       $function = $module . '_file_download';
       $result = $function($uri);
-      if ($result == -1) {
+      if ($result === -1) {
         return drupal_access_denied();
       }
       if (isset($result) && is_array($result)) {
@@ -2108,7 +2108,7 @@ function file_scan_directory($dir, $mask, $options = array(), $depth = 0) {
   $files = array();
   if (is_dir($dir) && $handle = opendir($dir)) {
     while (FALSE !== ($filename = readdir($handle))) {
-      if (!preg_match($options['nomask'], $filename) && $filename[0] != '.') {
+      if (!preg_match($options['nomask'], $filename) && $filename[0] !== '.') {
         $uri = "$dir/$filename";
         $uri = file_stream_wrapper_uri_normalize($uri);
         if (is_dir($uri) && $options['recurse']) {
@@ -2263,7 +2263,7 @@ function drupal_chmod($uri, $mode = NULL) {
  */
 function drupal_unlink($uri, $context = NULL) {
   $scheme = file_uri_scheme($uri);
-  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) == 'WIN')) {
+  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) === 'WIN')) {
     chmod($uri, 0600);
   }
   if ($context) {
@@ -2357,7 +2357,7 @@ function drupal_dirname($uri) {
  */
 function drupal_basename($uri, $suffix = NULL) {
   $separators = '/';
-  if (DIRECTORY_SEPARATOR != '/') {
+  if (DIRECTORY_SEPARATOR !== '/') {
     // For Windows OS add special separator.
     $separators .= DIRECTORY_SEPARATOR;
   }
@@ -2429,7 +2429,7 @@ function drupal_mkdir($uri, $mode = NULL, $recursive = FALSE, $context = NULL) {
  */
 function drupal_rmdir($uri, $context = NULL) {
   $scheme = file_uri_scheme($uri);
-  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) == 'WIN')) {
+  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) === 'WIN')) {
     chmod($uri, 0700);
   }
   if ($context) {
@@ -2496,7 +2496,7 @@ function file_directory_temp() {
     }
 
     // Operating system specific dirs.
-    if (substr(PHP_OS, 0, 3) == 'WIN') {
+    if (substr(PHP_OS, 0, 3) === 'WIN') {
       $directories[] = 'c:\\windows\\temp';
       $directories[] = 'c:\\winnt\\temp';
     }
diff --git a/core/includes/form.inc b/core/includes/form.inc
index ae04144..2991381 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -304,7 +304,7 @@ function drupal_build_form($form_id, &$form_state) {
   $form_state += form_state_defaults();
 
   if (!isset($form_state['input'])) {
-    $form_state['input'] = $form_state['method'] == 'get' ? $_GET : $_POST;
+    $form_state['input'] = $form_state['method'] === 'get' ? $_GET : $_POST;
   }
 
   if (isset($_SESSION['batch_form_state'])) {
@@ -320,7 +320,7 @@ function drupal_build_form($form_id, &$form_state) {
   // form to proceed. In addition, if there is stored form_state data from a
   // previous step, we'll retrieve it so it can be passed on to the form
   // processing code.
-  $check_cache = isset($form_state['input']['form_id']) && $form_state['input']['form_id'] == $form_id && !empty($form_state['input']['form_build_id']);
+  $check_cache = isset($form_state['input']['form_id']) && $form_state['input']['form_id'] === $form_id && !empty($form_state['input']['form_build_id']);
   if ($check_cache) {
     $form = form_get_cache($form_state['input']['form_build_id'], $form_state);
   }
@@ -828,7 +828,7 @@ function drupal_process_form($form_id, &$form, &$form_state) {
   $form_state['values'] = array();
 
   // With $_GET, these forms are always submitted if requested.
-  if ($form_state['method'] == 'get' && !empty($form_state['always_process'])) {
+  if ($form_state['method'] === 'get' && !empty($form_state['always_process'])) {
     if (!isset($form_state['input']['form_build_id'])) {
       $form_state['input']['form_build_id'] = $form['#build_id'];
     }
@@ -969,7 +969,7 @@ function drupal_prepare_form($form_id, &$form, &$form_state) {
   $form_state['programmed'] = isset($form_state['programmed']) ? $form_state['programmed'] : FALSE;
 
   // Fix the form method, if it is 'get' in $form_state, but not in $form.
-  if ($form_state['method'] == 'get' && !isset($form['#method'])) {
+  if ($form_state['method'] === 'get' && !isset($form['#method'])) {
     $form['#method'] = 'get';
   }
 
@@ -1296,7 +1296,7 @@ function _form_validate(&$elements, &$form_state, $form_id = NULL) {
       }
 
       if (isset($elements['#options']) && isset($elements['#value'])) {
-        if ($elements['#type'] == 'select') {
+        if ($elements['#type'] === 'select') {
           $options = form_options_flatten($elements['#options']);
         }
         else {
@@ -1320,7 +1320,7 @@ function _form_validate(&$elements, &$form_state, $form_id = NULL) {
         // identical to the empty option's value, we reset the element's value
         // to NULL to trigger the regular #required handling below.
         // @see form_process_select()
-        elseif ($elements['#type'] == 'select' && !$elements['#multiple'] && $elements['#required'] && !isset($elements['#default_value']) && $elements['#value'] === $elements['#empty_value']) {
+        elseif ($elements['#type'] === 'select' && !$elements['#multiple'] && $elements['#required'] && !isset($elements['#default_value']) && $elements['#value'] === $elements['#empty_value']) {
           $elements['#value'] = NULL;
           form_set_value($elements, NULL, $form_state);
         }
@@ -1372,7 +1372,7 @@ function _form_validate(&$elements, &$form_state, $form_id = NULL) {
       // An unchecked checkbox has a #value of integer 0, different than string
       // '0', which could be a valid value.
       $is_empty_multiple = (!count($elements['#value']));
-      $is_empty_string = (is_string($elements['#value']) && drupal_strlen(trim($elements['#value'])) == 0);
+      $is_empty_string = (is_string($elements['#value']) && drupal_strlen(trim($elements['#value'])) === 0);
       $is_empty_value = ($elements['#value'] === 0);
       if ($is_empty_multiple || $is_empty_string || $is_empty_value) {
         // Although discouraged, a #title is not mandatory for form elements. In
@@ -1442,7 +1442,7 @@ function form_execute_handlers($type, &$form, &$form_state) {
     // Check if a previous _submit handler has set a batch, but make sure we
     // do not react to a batch that is already being processed (for instance
     // if a batch operation performs a drupal_form_submit()).
-    if ($type == 'submit' && ($batch =& batch_get()) && !isset($batch['id'])) {
+    if ($type === 'submit' && ($batch =& batch_get()) && !isset($batch['id'])) {
       // Some previous submit handler has set a batch. To ensure correct
       // execution order, store the call in a special 'control' batch set.
       // See _batch_next_set().
@@ -1748,7 +1748,7 @@ function form_builder($form_id, &$element, &$form_state) {
   );
 
   // Special handling if we're on the top level form element.
-  if (isset($element['#type']) && $element['#type'] == 'form') {
+  if (isset($element['#type']) && $element['#type'] === 'form') {
     if (!empty($element['#https']) && variable_get('https', FALSE) &&
         !url_is_external($element['#action'])) {
       global $base_root;
@@ -1765,7 +1765,7 @@ function form_builder($form_id, &$element, &$form_state) {
     // Set a flag if we have a correct form submission. This is always TRUE for
     // programmed forms coming from drupal_form_submit(), or if the form_id coming
     // from the POST data is set and matches the current form_id.
-    if ($form_state['programmed'] || (!empty($form_state['input']) && (isset($form_state['input']['form_id']) && ($form_state['input']['form_id'] == $form_id)))) {
+    if ($form_state['programmed'] || (!empty($form_state['input']) && (isset($form_state['input']['form_id']) && ($form_state['input']['form_id'] === $form_id)))) {
       $form_state['process_input'] = TRUE;
     }
     else {
@@ -1864,13 +1864,13 @@ function form_builder($form_id, &$element, &$form_state) {
 
   // If there is a file element, we need to flip a flag so later the
   // form encoding can be set.
-  if (isset($element['#type']) && $element['#type'] == 'file') {
+  if (isset($element['#type']) && $element['#type'] === 'file') {
     $form_state['has_file_element'] = TRUE;
   }
 
   // Final tasks for the form element after form_builder() has run for all other
   // elements.
-  if (isset($element['#type']) && $element['#type'] == 'form') {
+  if (isset($element['#type']) && $element['#type'] === 'form') {
     // If there is a file element, we set the form encoding.
     if (isset($form_state['has_file_element'])) {
       $element['#attributes']['enctype'] = 'multipart/form-data';
@@ -1927,7 +1927,7 @@ function _form_builder_handle_input_element($form_id, &$element, &$form_state) {
   if (!isset($element['#name'])) {
     $name = array_shift($element['#parents']);
     $element['#name'] = $name;
-    if ($element['#type'] == 'file') {
+    if ($element['#type'] === 'file') {
       // To make it easier to handle $_FILES in file.inc, we place all
       // file fields in the 'files' array. Also, we do not support
       // nested file names.
@@ -2071,8 +2071,8 @@ function _form_builder_handle_input_element($form_id, &$element, &$form_state) {
  * named 'op', and only differing in their value.
  */
 function _form_element_triggered_scripted_submission($element, &$form_state) {
-  if (!empty($form_state['input']['_triggering_element_name']) && $element['#name'] == $form_state['input']['_triggering_element_name']) {
-    if (empty($form_state['input']['_triggering_element_value']) || $form_state['input']['_triggering_element_value'] == $element['#value']) {
+  if (!empty($form_state['input']['_triggering_element_name']) && $element['#name'] === $form_state['input']['_triggering_element_name']) {
+    if (empty($form_state['input']['_triggering_element_value']) || $form_state['input']['_triggering_element_value'] === $element['#value']) {
       return TRUE;
     }
   }
@@ -2105,7 +2105,7 @@ function _form_button_was_clicked($element, &$form_state) {
   // and the specific return value is used to determine which was
   // clicked. This ONLY works as long as $form['#name'] puts the
   // value at the top level of the tree of $_POST data.
-  if (isset($form_state['input'][$element['#name']]) && $form_state['input'][$element['#name']] == $element['#value']) {
+  if (isset($form_state['input'][$element['#name']]) && $form_state['input'][$element['#name']] === $element['#value']) {
     return TRUE;
   }
   // When image buttons are clicked, browsers do NOT pass the form element
@@ -2205,7 +2205,7 @@ function form_type_image_button_value($form, $input, $form_state) {
       $input = $form_state['input'];
       foreach (explode('[', $form['#name']) as $element_name) {
         // chop off the ] that may exist.
-        if (substr($element_name, -1) == ']') {
+        if (substr($element_name, -1) === ']') {
           $element_name = substr($element_name, 0, -1);
         }
 
@@ -2360,7 +2360,7 @@ function form_type_radios_value(&$element, $input = FALSE) {
  *   for this element. Return nothing to use the default.
  */
 function form_type_tableselect_value($element, $input = FALSE) {
-  // If $element['#multiple'] == FALSE, then radio buttons are displayed and
+  // If $element['#multiple'] === FALSE, then radio buttons are displayed and
   // the default value handling is used.
   if (isset($element['#multiple']) && $element['#multiple']) {
     // Checkboxes are being displayed with the default value coming from the
@@ -2733,7 +2733,7 @@ function form_get_options($element, $key) {
         $keys[] = $index;
       }
     }
-    elseif ($index == $key) {
+    elseif ($index === $key) {
       $keys[] = $index;
     }
   }
@@ -2793,7 +2793,7 @@ function theme_radio($variables) {
   $element['#attributes']['type'] = 'radio';
   element_set_attributes($element, array('id', 'name', '#return_value' => 'value'));
 
-  if (isset($element['#return_value']) && $element['#value'] !== FALSE && $element['#value'] == $element['#return_value']) {
+  if (isset($element['#return_value']) && $element['#value'] !== FALSE && $element['#value'] === $element['#return_value']) {
     $element['#attributes']['checked'] = 'checked';
   }
   _form_set_class($element, array('form-radio'));
@@ -3103,7 +3103,7 @@ function theme_checkboxes($variables) {
 function form_pre_render_conditional_form_element($element) {
   $t = get_t();
   // Set the element's title attribute to show #title as a tooltip, if needed.
-  if (isset($element['#title']) && $element['#title_display'] == 'attribute') {
+  if (isset($element['#title']) && $element['#title_display'] === 'attribute') {
     $element['#attributes']['title'] = $element['#title'];
     if (!empty($element['#required'])) {
       // Append an indication that this field is required.
@@ -3164,7 +3164,7 @@ function form_process_checkboxes($element) {
   $value = is_array($element['#value']) ? $element['#value'] : array();
   $element['#tree'] = TRUE;
   if (count($element['#options']) > 0) {
-    if (!isset($element['#default_value']) || $element['#default_value'] == 0) {
+    if (!isset($element['#default_value']) || $element['#default_value'] === 0) {
       $element['#default_value'] = array();
     }
     $weight = 0;
@@ -3402,7 +3402,7 @@ function form_process_tableselect($element) {
             '#type' => 'radio',
             '#title' => '',
             '#return_value' => $key,
-            '#default_value' => ($element['#default_value'] == $key) ? $key : NULL,
+            '#default_value' => ($element['#default_value'] === $key) ? $key : NULL,
             '#attributes' => $element['#attributes'],
             '#parents' => $element['#parents'],
             '#id' => drupal_html_id('edit-' . implode('-', $parents_for_id)),
@@ -3544,7 +3544,7 @@ function form_validate_machine_name(&$element, &$form_state) {
     if (!isset($element['#machine_name']['error'])) {
       // Since a hyphen is the most common alternative replacement character,
       // a corresponding validation error message is supported here.
-      if ($element['#machine_name']['replace'] == '-') {
+      if ($element['#machine_name']['replace'] === '-') {
         form_error($element, t('The machine-readable name must contain only lowercase letters, numbers, and hyphens.'));
       }
       // Otherwise, we assume the default (underscore).
@@ -3968,7 +3968,7 @@ function form_validate_number(&$element, &$form_state) {
     form_error($element, t('%name must be below or equal to %max.', array('%name' => $name, '%max' => $element['#max'])));
   }
 
-  if (isset($element['#step']) && strtolower($element['#step']) != 'any') {
+  if (isset($element['#step']) && strtolower($element['#step']) !== 'any') {
     // Check that the input is an allowed multiple of #step (offset by #min if
     // #min is set).
     $offset = isset($element['#min']) ? $element['#min'] : 0.0;
@@ -4346,11 +4346,11 @@ function theme_form_element_label($variables) {
 
   $attributes = array();
   // Style the label as class option to display inline with the element.
-  if ($element['#title_display'] == 'after') {
+  if ($element['#title_display'] === 'after') {
     $attributes['class'] = 'option';
   }
   // Show label only to screen readers to avoid disruption in visual flows.
-  elseif ($element['#title_display'] == 'invisible') {
+  elseif ($element['#title_display'] === 'invisible') {
     $attributes['class'] = 'element-invisible';
   }
 
@@ -4482,7 +4482,7 @@ function _form_set_class(&$element, $class = array()) {
  *     $context['sandbox']['current_node'] = $node->nid;
  *     $context['message'] = check_plain($node->title);
  *   }
- *   if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
+ *   if ($context['sandbox']['progress'] !== $context['sandbox']['max']) {
  *     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
  *   }
  * }
diff --git a/core/includes/gettext.inc b/core/includes/gettext.inc
index a8498dc..732728c 100644
--- a/core/includes/gettext.inc
+++ b/core/includes/gettext.inc
@@ -128,7 +128,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     // A line should not be longer than 10 * 1024.
     $line = fgets($fd, 10 * 1024);
 
-    if ($lineno == 0) {
+    if ($lineno === 0) {
       // The first line might come with a UTF-8 BOM, which should be removed.
       $line = str_replace("\xEF\xBB\xBF", '', $line);
     }
@@ -141,11 +141,11 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     if (!strncmp('#', $line, 1)) {
       // Lines starting with '#' are comments.
 
-      if ($context == 'COMMENT') {
+      if ($context === 'COMMENT') {
         // Already in comment token, insert the comment.
         $current['#'][] = substr($line, 1);
       }
-      elseif (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+      elseif (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
         // We are currently in string token, close it out.
         _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
 
@@ -164,7 +164,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     elseif (!strncmp('msgid_plural', $line, 12)) {
       // A plural form for the current message.
 
-      if ($context != 'MSGID') {
+      if ($context !== 'MSGID') {
         // A plural form cannot be added to anything else but the id directly.
         _locale_import_message('The translation file %filename contains an error: "msgid_plural" was expected but not found on line %line.', $file, $lineno);
         return FALSE;
@@ -189,14 +189,14 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     elseif (!strncmp('msgid', $line, 5)) {
       // Starting a new message.
 
-      if (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+      if (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
         // We are currently in a message string, close it out.
         _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
 
         // Start a new context for the id.
         $current = array();
       }
-      elseif ($context == 'MSGID') {
+      elseif ($context === 'MSGID') {
         // We are currently already in the context, meaning we passed an id with no data.
         _locale_import_message('The translation file %filename contains an error: "msgid" is unexpected on line %line.', $file, $lineno);
         return FALSE;
@@ -219,7 +219,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     elseif (!strncmp('msgctxt', $line, 7)) {
       // Starting a new context.
 
-      if (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+      if (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
         // We are currently in a message, start a new one.
         _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
         $current = array();
@@ -248,7 +248,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     elseif (!strncmp('msgstr[', $line, 7)) {
       // A message string for a specific plurality.
 
-      if (($context != 'MSGID') && ($context != 'MSGCTXT') && ($context != 'MSGID_PLURAL') && ($context != 'MSGSTR_ARR')) {
+      if (($context !== 'MSGID') && ($context !== 'MSGCTXT') && ($context !== 'MSGID_PLURAL') && ($context !== 'MSGSTR_ARR')) {
         // Message strings must come after msgid, msgxtxt, msgid_plural, or other msgstr[] entries.
         _locale_import_message('The translation file %filename contains an error: "msgstr[]" is unexpected on line %line.', $file, $lineno);
         return FALSE;
@@ -281,7 +281,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     elseif (!strncmp("msgstr", $line, 6)) {
       // A string for the an id or context.
 
-      if (($context != 'MSGID') && ($context != 'MSGCTXT')) {
+      if (($context !== 'MSGID') && ($context !== 'MSGCTXT')) {
         // Strings are only valid within an id or context scope.
         _locale_import_message('The translation file %filename contains an error: "msgstr" is unexpected on line %line.', $file, $lineno);
         return FALSE;
@@ -302,7 +302,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
 
       $context = 'MSGSTR';
     }
-    elseif ($line != '') {
+    elseif ($line !== '') {
       // Anything that is not a token may be a continuation of a previous token.
 
       $quoted = _locale_import_parse_quoted($line);
@@ -313,16 +313,16 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
       }
 
       // Append the string to the current context.
-      if (($context == 'MSGID') || ($context == 'MSGID_PLURAL')) {
+      if (($context === 'MSGID') || ($context === 'MSGID_PLURAL')) {
         $current['msgid'] .= $quoted;
       }
-      elseif ($context == 'MSGCTXT') {
+      elseif ($context === 'MSGCTXT') {
         $current['msgctxt'] .= $quoted;
       }
-      elseif ($context == 'MSGSTR') {
+      elseif ($context === 'MSGSTR') {
         $current['msgstr'] .= $quoted;
       }
-      elseif ($context == 'MSGSTR_ARR') {
+      elseif ($context === 'MSGSTR_ARR') {
         $current['msgstr'][$plural] .= $quoted;
       }
       else {
@@ -334,10 +334,10 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
   }
 
   // End of PO file, closed out the last entry.
-  if (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+  if (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
     _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
   }
-  elseif ($context != 'COMMENT') {
+  elseif ($context !== 'COMMENT') {
     _locale_import_message('The translation file %filename ended unexpectedly at line %line.', $file, $lineno);
     return FALSE;
   }
@@ -404,7 +404,7 @@ function _locale_import_one_string($op, $value = NULL, $overwrite_options = NULL
     // Store the string we got in the database.
     case 'db-store':
 
-      if ($value['msgid'] == '') {
+      if ($value['msgid'] === '') {
         // If 'msgid' is empty, it means we got values for the header of the
         // file as per the structure of the Gettext format.
         $locale_plurals = variable_get('locale_translation_plurals', array());
@@ -653,7 +653,7 @@ function _locale_import_parse_plural_forms($pluralforms, $filepath) {
  */
 function _locale_import_parse_arithmetic($string) {
   // Operator precedence table
-  $precedence = array("(" => -1, ")" => -1, "?" => 1, ":" => 1, "||" => 3, "&&" => 4, "==" => 5, "!=" => 5, "<" => 6, ">" => 6, "<=" => 6, ">=" => 6, "+" => 7, "-" => 7, "*" => 8, "/" => 8, "%" => 8);
+  $precedence = array("(" => -1, ")" => -1, "?" => 1, ":" => 1, "||" => 3, "&&" => 4, "===" => 5, "!=" => 5, "<" => 6, ">" => 6, "<=" => 6, ">=" => 6, "+" => 7, "-" => 7, "*" => 8, "/" => 8, "%" => 8);
   // Right associativity
   $right_associativity = array("?" => 1, ":" => 1);
 
@@ -672,15 +672,15 @@ function _locale_import_parse_arithmetic($string) {
     if (is_numeric($token)) {
       $element_stack[] = $current_token;
     }
-    elseif ($current_token == "n") {
+    elseif ($current_token === "n") {
       $element_stack[] = '$n';
     }
-    elseif ($current_token == "(") {
+    elseif ($current_token === "(") {
       $operator_stack[] = $current_token;
     }
-    elseif ($current_token == ")") {
+    elseif ($current_token === ")") {
       $topop = array_pop($operator_stack);
-      while (isset($topop) && ($topop != "(")) {
+      while (isset($topop) && ($topop !== "(")) {
         $element_stack[] = $topop;
         $topop = array_pop($operator_stack);
       }
@@ -689,7 +689,7 @@ function _locale_import_parse_arithmetic($string) {
       // If it's an operator, then pop from $operator_stack into $element_stack until the
       // precedence in $operator_stack is less than current, then push into $operator_stack
       $topop = array_pop($operator_stack);
-      while (isset($topop) && ($precedence[$topop] >= $precedence[$current_token]) && !(($precedence[$topop] == $precedence[$current_token]) && !empty($right_associativity[$topop]) && !empty($right_associativity[$current_token]))) {
+      while (isset($topop) && ($precedence[$topop] >= $precedence[$current_token]) && !(($precedence[$topop] === $precedence[$current_token]) && !empty($right_associativity[$topop]) && !empty($right_associativity[$current_token]))) {
         $element_stack[] = $topop;
         $topop = array_pop($operator_stack);
       }
@@ -705,7 +705,7 @@ function _locale_import_parse_arithmetic($string) {
 
   // Flush operator stack
   $topop = array_pop($operator_stack);
-  while ($topop != NULL) {
+  while ($topop !== NULL) {
     $element_stack[] = $topop;
     $topop = array_pop($operator_stack);
   }
@@ -718,10 +718,10 @@ function _locale_import_parse_arithmetic($string) {
       $op = $element_stack[$i];
       if (!empty($precedence[$op])) {
         $f = "";
-        if ($op == ":") {
+        if ($op === ":") {
           $f = $element_stack[$i - 2] . "):" . $element_stack[$i - 1] . ")";
         }
-        elseif ($op == "?") {
+        elseif ($op === "?") {
           $f = "(" . $element_stack[$i - 2] . "?(" . $element_stack[$i - 1];
         }
         else {
@@ -734,7 +734,7 @@ function _locale_import_parse_arithmetic($string) {
   }
 
   // If only one element is left, the number of operators is appropriate
-  if (count($element_stack) == 1) {
+  if (count($element_stack) === 1) {
     return $element_stack[0];
   }
   else {
@@ -772,7 +772,7 @@ function _locale_import_tokenize_formula($formula) {
         case 2:
         case 3:
         case 4:
-          if ($next == '=') {
+          if ($next === '=') {
             $tokens[] = $formula[$i] . '=';
             $i++;
           }
@@ -781,7 +781,7 @@ function _locale_import_tokenize_formula($formula) {
           }
           break;
         case 5:
-          if ($next == '&') {
+          if ($next === '&') {
             $tokens[] = '&&';
             $i++;
           }
@@ -790,7 +790,7 @@ function _locale_import_tokenize_formula($formula) {
           }
           break;
         case 6:
-          if ($next == '|') {
+          if ($next === '|') {
             $tokens[] = '||';
             $i++;
           }
@@ -840,15 +840,15 @@ function _locale_import_shorten_comments($comment) {
  *   The string parsed from inside the quotes.
  */
 function _locale_import_parse_quoted($string) {
-  if (substr($string, 0, 1) != substr($string, -1, 1)) {
+  if (substr($string, 0, 1) !== substr($string, -1, 1)) {
     return FALSE;   // Start and end quotes must be the same
   }
   $quote = substr($string, 0, 1);
   $string = substr($string, 1, -1);
-  if ($quote == '"') {        // Double quotes: strip slashes
+  if ($quote === '"') {        // Double quotes: strip slashes
     return stripcslashes($string);
   }
-  elseif ($quote == "'") {  // Simple quote: return as-is
+  elseif ($quote === "'") {  // Simple quote: return as-is
     return $string;
   }
   else {
@@ -880,7 +880,7 @@ function _locale_export_get_strings($language = NULL, $options = array()) {
     'not_customized' => FALSE,
     'not_translated' => FALSE,
   );
-  if (array_sum($options) == 0) {
+  if (array_sum($options) === 0) {
     // If user asked to not include anything in the translation files,
     // that would not make sense, so just fall back on providing a template.
     $language = NULL;
@@ -1070,7 +1070,7 @@ function _locale_export_string($str) {
   $parts = array();
 
   // Cut text into several lines
-  while ($stri != "") {
+  while ($stri !== "") {
     $i = strpos($stri, "\\n");
     if ($i === FALSE) {
       $curstr = $stri;
@@ -1089,7 +1089,7 @@ function _locale_export_string($str) {
     return "\"\"\n\"" . implode("\"\n\"", $parts) . "\"\n";
   }
   // Single line string
-  elseif (count($parts) == 1) {
+  elseif (count($parts) === 1) {
     return "\"$parts[0]\"\n";
   }
   // No translation
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index e07808a..c86fbc0 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -378,7 +378,7 @@ function install_run_tasks(&$install_state) {
     $install_state['active_task'] = $task_name;
     $original_parameters = $install_state['parameters'];
     $output = install_run_task($task, $install_state);
-    $install_state['parameters_changed'] = ($install_state['parameters'] != $original_parameters);
+    $install_state['parameters_changed'] = ($install_state['parameters'] !== $original_parameters);
     // Store this task as having been performed during the current request,
     // and save it to the database as completed, if we need to and if the
     // database is in a state that allows us to do so. Also mark the
@@ -386,7 +386,7 @@ function install_run_tasks(&$install_state) {
     if (!$install_state['task_not_complete']) {
       $install_state['tasks_performed'][] = $task_name;
       $install_state['installation_finished'] = empty($tasks_to_perform);
-      if ($install_state['database_tables_exist'] && ($task['run'] == INSTALL_TASK_RUN_IF_NOT_COMPLETED || $install_state['installation_finished'])) {
+      if ($install_state['database_tables_exist'] && ($task['run'] === INSTALL_TASK_RUN_IF_NOT_COMPLETED || $install_state['installation_finished'])) {
         variable_set('install_task', $install_state['installation_finished'] ? 'done' : $task_name);
       }
     }
@@ -414,7 +414,7 @@ function install_run_tasks(&$install_state) {
 function install_run_task($task, &$install_state) {
   $function = $task['function'];
 
-  if ($task['type'] == 'form') {
+  if ($task['type'] === 'form') {
     require_once DRUPAL_ROOT . '/core/includes/form.inc';
     if ($install_state['interactive']) {
       // For interactive forms, build the form and ensure that it will not
@@ -457,7 +457,7 @@ function install_run_task($task, &$install_state) {
     }
   }
 
-  elseif ($task['type'] == 'batch') {
+  elseif ($task['type'] === 'batch') {
     // Start a new batch based on the task function, if one is not running
     // already.
     $current_batch = variable_get('install_current_batch');
@@ -485,7 +485,7 @@ function install_run_task($task, &$install_state) {
     }
     // If we are in the middle of processing this batch, keep sending back
     // any output from the batch process, until the task is complete.
-    elseif ($current_batch == $function) {
+    elseif ($current_batch === $function) {
       include_once DRUPAL_ROOT . '/core/includes/batch.inc';
       $output = _batch_page();
       // The task is complete when we try to access the batch page and receive
@@ -533,10 +533,10 @@ function install_tasks_to_perform($install_state) {
     // Also, if we started this page request with an indication of the last
     // task that was completed, skip that task and all those that come before
     // it, unless they are marked as always needing to run.
-    if ($task['run'] == INSTALL_TASK_SKIP || in_array($name, $install_state['tasks_performed']) || (!empty($install_state['completed_task']) && empty($completed_task_found) && $task['run'] != INSTALL_TASK_RUN_IF_REACHED)) {
+    if ($task['run'] === INSTALL_TASK_SKIP || in_array($name, $install_state['tasks_performed']) || (!empty($install_state['completed_task']) && empty($completed_task_found) && $task['run'] !== INSTALL_TASK_RUN_IF_REACHED)) {
       unset($tasks[$name]);
     }
-    if (!empty($install_state['completed_task']) && $name == $install_state['completed_task']) {
+    if (!empty($install_state['completed_task']) && $name === $install_state['completed_task']) {
       $completed_task_found = TRUE;
     }
   }
@@ -560,7 +560,7 @@ function install_tasks_to_perform($install_state) {
  */
 function install_tasks($install_state) {
   // Determine whether translation import tasks will need to be performed.
-  $needs_translations = count($install_state['translations']) > 1 && !empty($install_state['parameters']['langcode']) && $install_state['parameters']['langcode'] != 'en';
+  $needs_translations = count($install_state['translations']) > 1 && !empty($install_state['parameters']['langcode']) && $install_state['parameters']['langcode'] !== 'en';
 
   // Start with the core installation tasks that run before handing control
   // to the install profile.
@@ -571,7 +571,7 @@ function install_tasks($install_state) {
     ),
     'install_select_profile' => array(
       'display_name' => st('Choose profile'),
-      'display' => count($install_state['profiles']) != 1,
+      'display' => count($install_state['profiles']) !== 1,
       'run' => INSTALL_TASK_RUN_IF_REACHED,
     ),
     'install_load_profile' => array(
@@ -591,7 +591,7 @@ function install_tasks($install_state) {
       'run' => INSTALL_TASK_RUN_IF_REACHED,
     ),
     'install_profile_modules' => array(
-      'display_name' => count($install_state['profiles']) == 1 ? st('Install site') : st('Install profile'),
+      'display_name' => count($install_state['profiles']) === 1 ? st('Install site') : st('Install profile'),
       'type' => 'batch',
     ),
     'install_import_translations' => array(
@@ -772,7 +772,7 @@ function install_verify_requirements(&$install_state) {
   // If there are errors, always display them. If there are only warnings, skip
   // them if the user has provided a URL parameter acknowledging the warnings
   // and indicating a desire to continue anyway. See drupal_requirements_url().
-  if ($severity == REQUIREMENT_ERROR || ($severity == REQUIREMENT_WARNING && empty($install_state['parameters']['continue']))) {
+  if ($severity === REQUIREMENT_ERROR || ($severity === REQUIREMENT_WARNING && empty($install_state['parameters']['continue']))) {
     if ($install_state['interactive']) {
       drupal_set_title(st('Requirements problem'));
       $status_report = theme('status_report', array('requirements' => $requirements));
@@ -786,7 +786,7 @@ function install_verify_requirements(&$install_state) {
         // Skip warnings altogether for non-interactive installations; these
         // proceed in a single request so there is no good opportunity (and no
         // good method) to warn the user anyway.
-        if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
+        if (isset($requirement['severity']) && $requirement['severity'] === REQUIREMENT_ERROR) {
           $failures[] = $requirement['title'] . ': ' . $requirement['value'] . "\n\n" . $requirement['description'];
         }
       }
@@ -841,7 +841,7 @@ function install_verify_completed_task() {
   catch (Exception $e) {
   }
   if (isset($task)) {
-    if ($task == 'done') {
+    if ($task === 'done') {
       throw new Exception(install_already_done_error());
     }
     return $task;
@@ -911,7 +911,7 @@ function install_settings_form($form, &$form_state, &$install_state) {
     '#default_value' => !empty($database['driver']) ? $database['driver'] : current($drivers_keys),
     '#description' => st('The type of database your @drupal data will be stored in.', array('@drupal' => drupal_install_profile_distribution_name())),
   );
-  if (count($drivers) == 1) {
+  if (count($drivers) === 1) {
     $form['driver']['#disabled'] = TRUE;
     $form['driver']['#description'] .= ' ' . st('Your PHP configuration only supports a single database type, so it has been automatically selected.');
   }
@@ -1110,11 +1110,11 @@ function install_select_profile(&$install_state) {
  * list or from a selection passed in via $_POST.
  */
 function _install_select_profile($profiles) {
-  if (sizeof($profiles) == 0) {
+  if (sizeof($profiles) === 0) {
     throw new Exception(install_no_profile_error());
   }
   // Don't need to choose profile if only one available.
-  if (sizeof($profiles) == 1) {
+  if (sizeof($profiles) === 1) {
     $profile = array_pop($profiles);
     // TODO: is this right?
     require_once DRUPAL_ROOT . '/' . $profile->uri;
@@ -1122,7 +1122,7 @@ function _install_select_profile($profiles) {
   }
   else {
     foreach ($profiles as $profile) {
-      if (!empty($_POST['profile']) && ($_POST['profile'] == $profile->name)) {
+      if (!empty($_POST['profile']) && ($_POST['profile'] === $profile->name)) {
         return $profile->name;
       }
     }
@@ -1257,7 +1257,7 @@ function install_select_language(&$install_state) {
 
   if (!empty($_POST['langcode'])) {
     foreach ($files as $file) {
-      if ($_POST['langcode'] == $file->langcode) {
+      if ($_POST['langcode'] === $file->langcode) {
         $install_state['parameters']['langcode'] = $file->langcode;
         return;
       }
@@ -1269,7 +1269,7 @@ function install_select_language(&$install_state) {
     // performing an interactive installation, inform the user that the
     // installer can be translated. Otherwise we assume the user knows what he
     // is doing.
-    if (count($files) == 1) {
+    if (count($files) === 1) {
       if ($install_state['interactive']) {
         $directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');
 
@@ -1354,7 +1354,7 @@ function install_select_language_form($form, &$form_state, $files) {
     '#size' => min(count($select_options), 10),
   );
 
-  if (count($files) == 1) {
+  if (count($files) === 1) {
     $form['help'] = array(
       '#markup' => '<p><a href="' . check_url(drupal_current_script_url(array('translate' => 'true'))) . '">' . st('Learn how to install Drupal in other languages') . '</a></p>',
     );
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 72adf1c..e86c902 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -120,7 +120,7 @@ function drupal_install_profile_distribution_name() {
 function drupal_detect_baseurl($file = 'core/install.php') {
   $proto = $_SERVER['HTTPS'] ? 'https://' : 'http://';
   $host = $_SERVER['SERVER_NAME'];
-  $port = ($_SERVER['SERVER_PORT'] == 80 ? '' : ':' . $_SERVER['SERVER_PORT']);
+  $port = ($_SERVER['SERVER_PORT'] === 80 ? '' : ':' . $_SERVER['SERVER_PORT']);
   $uri = preg_replace("/\?.*/", '', $_SERVER['REQUEST_URI']);
   $dir = str_replace("/$file", '', $uri);
 
@@ -206,12 +206,12 @@ function drupal_rewrite_settings($settings = array()) {
     // Step line by line through settings.php.
     while (!feof($fp)) {
       $line = fgets($fp);
-      if ($first && substr($line, 0, 5) != '<?php') {
+      if ($first && substr($line, 0, 5) !== '<?php') {
         $buffer = "<?php\n\n";
       }
       $first = FALSE;
       // Check for constants.
-      if (substr($line, 0, 7) == 'define(') {
+      if (substr($line, 0, 7) === 'define(') {
         preg_match('/define\(\s*[\'"]([A-Z_-]+)[\'"]\s*,(.*?)\);/', $line, $variable);
         if (in_array($variable[1], $keys)) {
           $setting = $settings[$variable[1]];
@@ -224,7 +224,7 @@ function drupal_rewrite_settings($settings = array()) {
         }
       }
       // Check for variables.
-      elseif (substr($line, 0, 1) == '$') {
+      elseif (substr($line, 0, 1) === '$') {
         preg_match('/\$([^ ]*) /', $line, $variable);
         if (in_array($variable[1], $keys)) {
           // Write new value to settings.php in the following format:
@@ -365,7 +365,7 @@ function drupal_uninstall_modules($module_list = array(), $uninstall_dependents
 
     $profile = drupal_get_profile();
     while (list($module) = each($module_list)) {
-      if (!isset($module_data[$module]) || drupal_get_installed_schema_version($module) == SCHEMA_UNINSTALLED) {
+      if (!isset($module_data[$module]) || drupal_get_installed_schema_version($module) === SCHEMA_UNINSTALLED) {
         // This module doesn't exist or is already uninstalled, skip it.
         unset($module_list[$module]);
         continue;
@@ -377,7 +377,7 @@ function drupal_uninstall_modules($module_list = array(), $uninstall_dependents
       // them automatically because uninstalling a module is a destructive
       // operation.
       foreach (array_keys($module_data[$module]->required_by) as $dependent) {
-        if (!isset($module_list[$dependent]) && drupal_get_installed_schema_version($dependent) != SCHEMA_UNINSTALLED && $dependent != $profile) {
+        if (!isset($module_list[$dependent]) && drupal_get_installed_schema_version($dependent) !== SCHEMA_UNINSTALLED && $dependent !== $profile) {
           return FALSE;
         }
       }
@@ -456,7 +456,7 @@ function drupal_verify_install_file($file, $mask = NULL, $type = 'file') {
         switch ($current_mask) {
           case FILE_EXIST:
             if (!file_exists($file)) {
-              if ($type == 'dir') {
+              if ($type === 'dir') {
                 drupal_install_mkdir($file, $mask);
               }
               if (!file_exists($file)) {
@@ -694,7 +694,7 @@ function drupal_requirements_url($severity) {
   $query = array();
   // If there are no errors, only warnings, append 'continue=1' to the URL so
   // the user can bypass this screen on the next page load.
-  if ($severity == REQUIREMENT_WARNING) {
+  if ($severity === REQUIREMENT_WARNING) {
     $query['continue'] = 1;
   }
   return drupal_current_script_url($query);
@@ -823,10 +823,10 @@ function drupal_check_module($module) {
   if (module_hook($module, 'requirements')) {
     // Check requirements
     $requirements = module_invoke($module, 'requirements', 'install');
-    if (is_array($requirements) && drupal_requirements_severity($requirements) == REQUIREMENT_ERROR) {
+    if (is_array($requirements) && drupal_requirements_severity($requirements) === REQUIREMENT_ERROR) {
       // Print any error messages
       foreach ($requirements as $requirement) {
-        if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
+        if (isset($requirement['severity']) && $requirement['severity'] === REQUIREMENT_ERROR) {
           $message = $requirement['description'];
           if (isset($requirement['value']) && $requirement['value']) {
             $message .= ' (' . t('Currently using !item !version', array('!item' => $requirement['title'], '!version' => $requirement['value'])) . ')';
@@ -892,7 +892,7 @@ function install_profile_info($profile, $langcode = 'en') {
     $info['dependencies'] = array_unique(array_merge(
       drupal_required_modules(),
       $info['dependencies'],
-      ($langcode != 'en' && !empty($langcode) ? array('locale') : array()))
+      ($langcode !== 'en' && !empty($langcode) ? array('locale') : array()))
     );
 
     // drupal_required_modules() includes the current profile as a dependency.
diff --git a/core/includes/language.inc b/core/includes/language.inc
index 2c46c76..0fe3a6d 100644
--- a/core/includes/language.inc
+++ b/core/includes/language.inc
@@ -352,7 +352,7 @@ function language_negotiation_method_invoke($method_id, $method = NULL) {
 
     // If the language negotiation method has no cache preference or this is
     // satisfied we can execute the callback.
-    $cache = !isset($method['cache']) || $user->uid || $method['cache'] == variable_get('cache', 0);
+    $cache = !isset($method['cache']) || $user->uid || $method['cache'] === variable_get('cache', 0);
     $callback = isset($method['callbacks']['negotiation']) ? $method['callbacks']['negotiation'] : FALSE;
     $langcode = $cache && function_exists($callback) ? $callback($languages) : FALSE;
     $results[$method_id] = isset($languages[$langcode]) ? $languages[$langcode] : FALSE;
@@ -399,7 +399,7 @@ function language_url_split_prefix($path, $languages) {
   // Search prefix within enabled languages.
   $prefixes = language_negotiation_url_prefixes();
   foreach ($languages as $language) {
-    if (isset($prefixes[$language->langcode]) && $prefixes[$language->langcode] == $prefix) {
+    if (isset($prefixes[$language->langcode]) && $prefixes[$language->langcode] === $prefix) {
       // Rebuild $path with the language removed.
       return array($language, implode('/', $args));
     }
diff --git a/core/includes/mail.inc b/core/includes/mail.inc
index f58a76e..736745d 100644
--- a/core/includes/mail.inc
+++ b/core/includes/mail.inc
@@ -462,7 +462,7 @@ function drupal_html_to_text($string, $allowed_tags = NULL) {
         case '/h2':
           $casing = NULL;
           // Pad the line with dashes.
-          $output = _drupal_html_to_text_pad($output, ($tagname == '/h1') ? '=' : '-', ' ');
+          $output = _drupal_html_to_text_pad($output, ($tagname === '/h1') ? '=' : '-', ' ');
           array_pop($indent);
           $chunk = ''; // Ensure blank new-line.
           break;
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index 4f0cf94..e970b22 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -495,7 +495,7 @@ function menu_execute_active_handler($path = NULL, $deliver = TRUE) {
   drupal_alter('menu_site_status', $page_callback_result, $read_only_path);
 
   // Only continue if the site status is not set.
-  if ($page_callback_result == MENU_SITE_ONLINE) {
+  if ($page_callback_result === MENU_SITE_ONLINE) {
     if ($router_item = menu_get_item($path)) {
       if ($router_item['access']) {
         if ($router_item['include_file']) {
@@ -616,8 +616,8 @@ function _menu_check_access(&$item, $map) {
     $arguments = menu_unserialize($item['access_arguments'], $map);
     // 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 ($callback == 'user_access') {
-      $item['access'] = (count($arguments) == 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
+    if ($callback === 'user_access') {
+      $item['access'] = (count($arguments) === 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
     }
     else {
       $item['access'] = call_user_func_array($callback, $arguments);
@@ -668,10 +668,10 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
   // itself; can't localize.
   // If we are translating a router item (tabs, page, breadcrumb), then we
   // can always use the information from the router item.
-  if (!$link_translate || ($item['title'] == $item['link_title'])) {
+  if (!$link_translate || ($item['title'] === $item['link_title'])) {
     // t() is a special case. Since it is used very close to all the time,
     // we handle it directly instead of using indirect, slower methods.
-    if ($callback == 't') {
+    if ($callback === 't') {
       if (empty($item['title_arguments'])) {
         $item['title'] = t($item['title']);
       }
@@ -687,7 +687,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
         $item['title'] = call_user_func_array($callback, menu_unserialize($item['title_arguments'], $map));
       }
       // Avoid calling check_plain again on l() function.
-      if ($callback == 'check_plain') {
+      if ($callback === 'check_plain') {
         $item['localized_options']['html'] = TRUE;
       }
     }
@@ -700,7 +700,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
   if (!empty($item['description'])) {
     $original_description = $item['description'];
     $item['description'] = t($item['description']);
-    if ($link_translate && isset($item['options']['attributes']['title']) && $item['options']['attributes']['title'] == $original_description) {
+    if ($link_translate && isset($item['options']['attributes']['title']) && $item['options']['attributes']['title'] === $original_description) {
       $item['localized_options']['attributes']['title'] = $item['description'];
     }
   }
@@ -759,13 +759,13 @@ function _menu_translate(&$router_item, $map, $to_arg = FALSE) {
     $tab_parent_map = explode('/', $router_item['tab_parent']);
   }
   for ($i = 0; $i < $router_item['number_parts']; $i++) {
-    if ($link_map[$i] == '%') {
+    if ($link_map[$i] === '%') {
       $link_map[$i] = $path_map[$i];
     }
-    if (isset($tab_root_map[$i]) && $tab_root_map[$i] == '%') {
+    if (isset($tab_root_map[$i]) && $tab_root_map[$i] === '%') {
       $tab_root_map[$i] = $path_map[$i];
     }
-    if (isset($tab_parent_map[$i]) && $tab_parent_map[$i] == '%') {
+    if (isset($tab_parent_map[$i]) && $tab_parent_map[$i] === '%') {
       $tab_parent_map[$i] = $path_map[$i];
     }
   }
@@ -937,7 +937,7 @@ function _menu_link_translate(&$item, $translate = FALSE) {
  * "story" content type:
  * @code
  * $node = menu_get_object();
- * $story = $node->type == 'story';
+ * $story = $node->type === 'story';
  * @endcode
  *
  * @param $type
@@ -954,7 +954,7 @@ function _menu_link_translate(&$item, $translate = FALSE) {
  */
 function menu_get_object($type = 'node', $position = 1, $path = NULL) {
   $router_item = menu_get_item($path);
-  if (isset($router_item['load_functions'][$position]) && !empty($router_item['map'][$position]) && $router_item['load_functions'][$position] == $type . '_load') {
+  if (isset($router_item['load_functions'][$position]) && !empty($router_item['map'][$position]) && $router_item['load_functions'][$position] === $type . '_load') {
     return $router_item['map'][$position];
   }
 }
@@ -1013,10 +1013,10 @@ function menu_tree_output($tree) {
   $num_items = count($items);
   foreach ($items as $i => $data) {
     $class = array();
-    if ($i == 0) {
+    if ($i === 0) {
       $class[] = 'first';
     }
-    if ($i == $num_items - 1) {
+    if ($i === $num_items - 1) {
       $class[] = 'last';
     }
     // Set a class for the <li>-tag. Since $data['below'] may contain local
@@ -1040,7 +1040,7 @@ function menu_tree_output($tree) {
     // the active class accordingly. But local tasks do not appear in menu
     // trees, so if the current path is a local task, and this link is its
     // tab root, then we have to set the class manually.
-    if ($data['link']['href'] == $router_item['tab_root_href'] && $data['link']['href'] != $_GET['q']) {
+    if ($data['link']['href'] === $router_item['tab_root_href'] && $data['link']['href'] !== $_GET['q']) {
       $data['link']['localized_options']['attributes']['class'][] = 'active';
     }
 
@@ -1234,7 +1234,7 @@ function menu_tree_page_data($menu_name, $max_depth = NULL, $only_active_trail =
           'max_depth' => $max_depth,
         );
         // Parent mlids; used both as key and value to ensure uniqueness.
-        // We always want all the top-level links with plid == 0.
+        // We always want all the top-level links with plid === 0.
         $active_trail = array(0 => 0);
 
         // If the item for the current page is accessible, build the tree
@@ -1247,7 +1247,7 @@ function menu_tree_page_data($menu_name, $max_depth = NULL, $only_active_trail =
             // active trail, if it resides in the requested menu. Otherwise,
             // we'd needlessly re-run _menu_build_tree() queries for every menu
             // on every page.
-            if ($active_link['menu_name'] == $menu_name) {
+            if ($active_link['menu_name'] === $menu_name) {
               // Use all the coordinates, except the last one because there
               // can be no child beyond the last column.
               for ($i = 1; $i < MENU_MAX_DEPTH; $i++) {
@@ -1405,7 +1405,7 @@ function _menu_build_tree($menu_name, array $parameters = array()) {
       $query->condition('ml.mlid', $parameters['active_trail'], 'IN');
     }
     $min_depth = (isset($parameters['min_depth']) ? $parameters['min_depth'] : 1);
-    if ($min_depth != 1) {
+    if ($min_depth !== 1) {
       $query->condition('ml.depth', $min_depth, '>=');
     }
     if (isset($parameters['max_depth'])) {
@@ -1446,7 +1446,7 @@ function _menu_build_tree($menu_name, array $parameters = array()) {
  */
 function menu_tree_collect_node_links(&$tree, &$node_links) {
   foreach ($tree as $key => $v) {
-    if ($tree[$key]['link']['router_path'] == 'node/%') {
+    if ($tree[$key]['link']['router_path'] === 'node/%') {
       $nid = substr($tree[$key]['link']['link_path'], 5);
       if (is_numeric($nid)) {
         $node_links[$nid][$tree[$key]['link']['mlid']] = &$tree[$key]['link'];
@@ -1725,7 +1725,7 @@ function menu_get_custom_theme($initialize = FALSE) {
   $custom_theme = &drupal_static(__FUNCTION__);
   // Skip this if the site is offline or being installed or updated, since the
   // menu system may not be correctly initialized then.
-  if ($initialize && !_menu_site_is_offline(TRUE) && (!defined('MAINTENANCE_MODE') || (MAINTENANCE_MODE != 'update' && MAINTENANCE_MODE != 'install'))) {
+  if ($initialize && !_menu_site_is_offline(TRUE) && (!defined('MAINTENANCE_MODE') || (MAINTENANCE_MODE !== 'update' && MAINTENANCE_MODE !== 'install'))) {
     // First allow modules to dynamically set a custom theme for the current
     // page. Since we can only have one, the last module to return a valid
     // theme takes precedence.
@@ -1780,7 +1780,7 @@ function menu_secondary_menu() {
 
   // If the secondary menu source is set as the primary menu, we display the
   // second level of the primary menu.
-  if (variable_get('menu_secondary_links_source', 'user-menu') == variable_get('menu_main_links_source', 'main-menu')) {
+  if (variable_get('menu_secondary_links_source', 'user-menu') === variable_get('menu_main_links_source', 'main-menu')) {
     return menu_navigation_links(variable_get('menu_main_links_source', 'main-menu'), 1);
   }
   else {
@@ -1837,7 +1837,7 @@ function menu_navigation_links($menu_name, $level = 0) {
       // the active class accordingly. But local tasks do not appear in menu
       // trees, so if the current path is a local task, and this link is its
       // tab root, then we have to set the class manually.
-      if ($item['link']['href'] == $router_item['tab_root_href'] && $item['link']['href'] != $_GET['q']) {
+      if ($item['link']['href'] === $router_item['tab_root_href'] && $item['link']['href'] !== $_GET['q']) {
         $l['attributes']['class'][] = 'active';
       }
       // Keyed with the unique mlid to generate classes in theme_links().
@@ -1940,9 +1940,9 @@ function menu_local_tasks($level = 0) {
           $link = $item;
           // The default task is always active. As tabs can be normal items
           // too, so bitmask with MENU_LINKS_TO_PARENT before checking.
-          if (($item['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT) {
+          if (($item['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT) {
             // Find the first parent which is not a default local task or action.
-            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
+            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
             // Use the path of the parent instead.
             $link['href'] = $tasks[$p]['href'];
             // Mark the link as active, if the current path happens to be the
@@ -1952,7 +1952,7 @@ function menu_local_tasks($level = 0) {
             // tasks can still be accessed directly, in which case this link
             // would not be marked as active, since l() only compares the href
             // with $_GET['q'].
-            if ($link['href'] != $_GET['q']) {
+            if ($link['href'] !== $_GET['q']) {
               $link['localized_options']['attributes']['class'][] = 'active';
             }
             $tabs_current[] = array(
@@ -1966,7 +1966,7 @@ function menu_local_tasks($level = 0) {
           else {
             // Actions can be normal items too, so bitmask with
             // MENU_IS_LOCAL_ACTION before checking.
-            if (($item['type'] & MENU_IS_LOCAL_ACTION) == MENU_IS_LOCAL_ACTION) {
+            if (($item['type'] & MENU_IS_LOCAL_ACTION) === MENU_IS_LOCAL_ACTION) {
               // The item is an action, display it as such.
               $actions_current[] = array(
                 '#theme' => 'menu_local_action',
@@ -2013,22 +2013,22 @@ function menu_local_tasks($level = 0) {
           $link = $item;
           // Local tasks can be normal items too, so bitmask with
           // MENU_LINKS_TO_PARENT before checking.
-          if (($item['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT) {
+          if (($item['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT) {
             // Find the first parent which is not a default local task.
-            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
+            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
             // Use the path of the parent instead.
             $link['href'] = $tasks[$p]['href'];
-            if ($item['path'] == $router_item['path']) {
+            if ($item['path'] === $router_item['path']) {
               $root_path = $tasks[$p]['path'];
             }
           }
           // We check for the active tab.
-          if ($item['path'] == $path) {
+          if ($item['path'] === $path) {
             // Mark the link as active, if the current path is a (second-level)
             // local task of a default local task. Since this default local task
             // links to its parent, l() will not mark it as active, as it only
             // compares the link's href to $_GET['q'].
-            if ($link['href'] != $_GET['q']) {
+            if ($link['href'] !== $_GET['q']) {
               $link['localized_options']['attributes']['class'][] = 'active';
             }
             $tabs_current[] = array(
@@ -2380,7 +2380,7 @@ function menu_set_active_trail($new_trail = NULL) {
     // appending either the preferred link or the menu router item for the
     // current page. Exclude it if we are on the front page.
     $last = end($trail);
-    if ($preferred_link && $last['href'] != $preferred_link['href'] && !drupal_is_front_page()) {
+    if ($preferred_link && $last['href'] !== $preferred_link['href'] && !drupal_is_front_page()) {
       $trail[] = $preferred_link;
     }
   }
@@ -2530,7 +2530,7 @@ function menu_get_active_breadcrumb() {
 
     // Don't show a link to the current page in the breadcrumb trail.
     $end = end($active_trail);
-    if ($item['href'] == $end['href']) {
+    if ($item['href'] === $end['href']) {
       array_pop($active_trail);
     }
 
@@ -2547,7 +2547,7 @@ function menu_get_active_breadcrumb() {
     // (commonly MENU_DEFAULT_LOCAL_TASK). In order to also hide the parent link
     // itself, we always remove the last link in the trail, if the current
     // router item links to its parent.
-    if (($item['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT) {
+    if (($item['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT) {
       array_pop($active_trail);
     }
 
@@ -2727,7 +2727,7 @@ function menu_get_router() {
  */
 function _menu_link_build($item) {
   // Suggested items are disabled by default.
-  if ($item['type'] == MENU_SUGGESTED_ITEM) {
+  if ($item['type'] === MENU_SUGGESTED_ITEM) {
     $item['hidden'] = 1;
   }
   // Hide all items that are not visible in the tree.
@@ -2775,7 +2775,7 @@ function _menu_navigation_links_rebuild($menu) {
       if ($existing_item) {
         $item['mlid'] = $existing_item['mlid'];
         // A change in hook_menu may move the link to a different menu
-        if (empty($item['menu_name']) || ($item['menu_name'] == $existing_item['menu_name'])) {
+        if (empty($item['menu_name']) || ($item['menu_name'] === $existing_item['menu_name'])) {
           $item['menu_name'] = $existing_item['menu_name'];
           $item['plid'] = $existing_item['plid'];
         }
@@ -2818,10 +2818,10 @@ function _menu_navigation_links_rebuild($menu) {
     ->execute();
   foreach ($result as $item) {
     $router_path = _menu_find_router_path($item['link_path']);
-    if (!empty($router_path) && ($router_path != $item['router_path'] || $item['updated'])) {
+    if (!empty($router_path) && ($router_path !== $item['router_path'] || $item['updated'])) {
       // If the router path and the link path matches, it's surely a working
       // item, so we clear the updated flag.
-      $updated = $item['updated'] && $router_path != $item['link_path'];
+      $updated = $item['updated'] && $router_path !== $item['link_path'];
       db_update('menu_links')
         ->fields(array(
           'router_path' => $router_path,
@@ -2948,7 +2948,7 @@ function menu_link_delete($mlid, $path = NULL) {
  */
 function _menu_delete_item($item, $force = FALSE) {
   $item = is_object($item) ? get_object_vars($item) : $item;
-  if ($item && ($item['module'] != 'system' || $item['updated'] || $force)) {
+  if ($item && ($item['module'] !== 'system' || $item['updated'] || $force)) {
     // Children get re-attached to the item's parent.
     if ($item['has_children']) {
       $result = db_query("SELECT mlid FROM {menu_links} WHERE plid = :plid", array(':plid' => $item['mlid']));
@@ -3007,7 +3007,7 @@ function menu_link_save(&$item, $existing_item = array(), $parent_candidates = a
 
   // This is the easiest way to handle the unique internal path '<front>',
   // since a path marked as external does not need to match a router path.
-  $item['external'] = (url_is_external($item['link_path'])  || $item['link_path'] == '<front>') ? 1 : 0;
+  $item['external'] = (url_is_external($item['link_path'])  || $item['link_path'] === '<front>') ? 1 : 0;
   // Load defaults.
   $item += array(
     'menu_name' => 'navigation',
@@ -3066,7 +3066,7 @@ function menu_link_save(&$item, $existing_item = array(), $parent_candidates = a
   }
 
   // Directly fill parents for top-level links.
-  if ($item['plid'] == 0) {
+  if ($item['plid'] === 0) {
     $item['p1'] = $item['mlid'];
     for ($i = 2; $i <= MENU_MAX_DEPTH; $i++) {
       $item["p$i"] = 0;
@@ -3089,11 +3089,11 @@ function menu_link_save(&$item, $existing_item = array(), $parent_candidates = a
     _menu_link_parents_set($item, $parent);
   }
   // Need to check both plid and menu_name, since plid can be 0 in any menu.
-  if ($existing_item && ($item['plid'] != $existing_item['plid'] || $menu_name != $existing_item['menu_name'])) {
+  if ($existing_item && ($item['plid'] !== $existing_item['plid'] || $menu_name !== $existing_item['menu_name'])) {
     _menu_link_move_children($item, $existing_item);
   }
   // Find the router_path.
-  if (empty($item['router_path'])  || !$existing_item || ($existing_item['link_path'] != $item['link_path'])) {
+  if (empty($item['router_path'])  || !$existing_item || ($existing_item['link_path'] !== $item['link_path'])) {
     if ($item['external']) {
       $item['router_path'] = '';
     }
@@ -3108,7 +3108,7 @@ function menu_link_save(&$item, $existing_item = array(), $parent_candidates = a
   // array_intersect_key() with the $item as the first parameter because
   // $item may have additional keys left over from building a router entry.
   // The intersect removes the extra keys, allowing a meaningful comparison.
-  if (!$existing_item || (array_intersect_key($item, $existing_item) != $existing_item)) {
+  if (!$existing_item || (array_intersect_key($item, $existing_item) !== $existing_item)) {
     db_update('menu_links')
       ->fields(array(
         'menu_name' => $item['menu_name'],
@@ -3140,7 +3140,7 @@ function menu_link_save(&$item, $existing_item = array(), $parent_candidates = a
     // Check the has_children status of the parent.
     _menu_update_parental_status($item);
     menu_cache_clear($menu_name);
-    if ($existing_item && $menu_name != $existing_item['menu_name']) {
+    if ($existing_item && $menu_name !== $existing_item['menu_name']) {
       menu_cache_clear($existing_item['menu_name']);
     }
     // Notify modules we have acted on a menu item.
@@ -3210,7 +3210,7 @@ function _menu_link_find_parent($menu_link, $parent_candidates = array()) {
   // If everything else failed, try to derive the parent from the path
   // hierarchy. This only makes sense for links derived from menu router
   // items (ie. from hook_menu()).
-  if ($menu_link['module'] == 'system') {
+  if ($menu_link['module'] === 'system') {
     $query = db_select('menu_links');
     $query->condition('module', 'system');
     // We always respect the link's 'menu_name'; inheritance for router items is
@@ -3225,7 +3225,7 @@ function _menu_link_find_parent($menu_link, $parent_candidates = array()) {
       $new_query = clone $query;
       $new_query->condition('link_path', $parent_path);
       // Only valid if we get a unique result.
-      if ($new_query->countQuery()->execute()->fetchField() == 1) {
+      if ($new_query->countQuery()->execute()->fetchField() === 1) {
         $parent = $new_query->fields('menu_links')->execute()->fetchAssoc();
       }
     } while ($parent === FALSE && $parent_path);
@@ -3242,13 +3242,13 @@ function _menu_clear_page_cache() {
 
   // Clear the page and block caches, but at most twice, including at
   //  the end of the page load when there are multiple links saved or deleted.
-  if ($cache_cleared == 0) {
+  if ($cache_cleared === 0) {
     cache_clear_all();
     // Keep track of which menus have expanded items.
     _menu_set_expanded_menus();
     $cache_cleared = 1;
   }
-  elseif ($cache_cleared == 1) {
+  elseif ($cache_cleared === 1) {
     drupal_register_shutdown_function('cache_clear_all');
     // Keep track of which menus have expanded items.
     drupal_register_shutdown_function('_menu_set_expanded_menus');
@@ -3431,7 +3431,7 @@ function _menu_link_move_children($item, $existing_item) {
  * Check and update the has_children status for the parent of a link.
  */
 function _menu_update_parental_status($item, $exclude = FALSE) {
-  // If plid == 0, there is nothing to update.
+  // If plid === 0, there is nothing to update.
   if ($item['plid']) {
     // Check if at least one visible child exists in the table.
     $query = db_select('menu_links');
@@ -3599,7 +3599,7 @@ function _menu_router_build($callbacks) {
         // If an access callback is not found for a default local task we use
         // the callback from the parent, since we expect them to be identical.
         // In all other cases, the access parameters must be specified.
-        if (($item['type'] == MENU_DEFAULT_LOCAL_TASK) && !isset($item['access callback']) && isset($parent['access callback'])) {
+        if (($item['type'] === MENU_DEFAULT_LOCAL_TASK) && !isset($item['access callback']) && isset($parent['access callback'])) {
           $item['access callback'] = $parent['access callback'];
           if (!isset($item['access arguments']) && isset($parent['access arguments'])) {
             $item['access arguments'] = $parent['access arguments'];
@@ -3616,7 +3616,7 @@ function _menu_router_build($callbacks) {
           }
           if (!isset($item['file']) && isset($parent['file'])) {
             $item['file'] = $parent['file'];
-            if (empty($item['file path']) && isset($item['module']) && isset($parent['module']) && $item['module'] != $parent['module']) {
+            if (empty($item['file path']) && isset($item['module']) && isset($parent['module']) && $item['module'] !== $parent['module']) {
               $item['file path'] = drupal_get_path('module', $parent['module']);
             }
           }
@@ -3763,7 +3763,7 @@ function _menu_router_save($menu, $masks) {
 
     // Execute in batches to avoid the memory overhead of all of those records
     // in the query object.
-    if (++$num_records == 20) {
+    if (++$num_records === 20) {
       $insert->execute();
       $num_records = 0;
     }
@@ -3800,7 +3800,7 @@ function _menu_site_is_offline($check_only = FALSE) {
       // Ensure that the maintenance mode message is displayed only once
       // (allowing for page redirects) and specifically suppress its display on
       // the maintenance mode settings page.
-      if (!$check_only && $_GET['q'] != 'admin/config/development/maintenance') {
+      if (!$check_only && $_GET['q'] !== 'admin/config/development/maintenance') {
         if (user_access('administer site configuration')) {
           drupal_set_message(t('Operating in maintenance mode. <a href="@url">Go online.</a>', array('@url' => url('admin/config/development/maintenance'))), 'status', FALSE);
         }
diff --git a/core/includes/module.inc b/core/includes/module.inc
index 0b357a1..303b5f1 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -127,7 +127,7 @@ function system_list($type) {
   // For bootstrap modules, attempt to fetch the list from cache if possible.
   // if not fetch only the required information to fire bootstrap hooks
   // in case we are going to serve the page from cache.
-  if ($type == 'bootstrap') {
+  if ($type === 'bootstrap') {
     if (isset($lists['bootstrap'])) {
       return $lists['bootstrap'];
     }
@@ -169,11 +169,11 @@ function system_list($type) {
       foreach ($result as $record) {
         $record->info = unserialize($record->info);
         // Build a list of all enabled modules.
-        if ($record->type == 'module') {
+        if ($record->type === 'module') {
           $lists['module_enabled'][$record->name] = $record;
         }
         // Build a list of themes.
-        if ($record->type == 'theme') {
+        if ($record->type === 'theme') {
           $lists['theme'][$record->name] = $record;
         }
         // Build a list of filenames so drupal_get_filename can use it.
@@ -203,7 +203,7 @@ function system_list($type) {
           $base_key = $key;
         }
         // Set the theme engine prefix.
-        $lists['theme'][$key]->prefix = ($lists['theme'][$key]->info['engine'] == 'theme') ? $base_key : $lists['theme'][$key]->info['engine'];
+        $lists['theme'][$key]->prefix = ($lists['theme'][$key]->info['engine'] === 'theme') ? $base_key : $lists['theme'][$key]->info['engine'];
       }
       cache('bootstrap')->set('system_list', $lists);
     }
@@ -429,7 +429,7 @@ function module_enable($module_list, $enable_dependencies = TRUE) {
       ':type' => 'module',
       ':name' => $module))
       ->fetchObject();
-    if ($existing->status == 0) {
+    if ((int) $existing->status === 0) {
       // Load the module's code.
       drupal_load('module', $module);
       module_load_install($module);
@@ -457,7 +457,7 @@ function module_enable($module_list, $enable_dependencies = TRUE) {
       module_invoke_all('modules_preinstall', array($module));
 
       // Now install the module if necessary.
-      if (drupal_get_installed_schema_version($module, TRUE) == SCHEMA_UNINSTALLED) {
+      if ((int) drupal_get_installed_schema_version($module, TRUE) === SCHEMA_UNINSTALLED) {
         drupal_install_schema($module);
 
         // Set the schema version to the number of the last update provided
@@ -536,7 +536,7 @@ function module_disable($module_list, $disable_dependents = TRUE) {
       // Add dependent modules to the list, with a placeholder weight.
       // The new modules will be processed as the while loop continues.
       foreach ($module_data[$module]->required_by as $dependent => $dependent_data) {
-        if (!isset($module_list[$dependent]) && $dependent != $profile) {
+        if (!isset($module_list[$dependent]) && $dependent !== $profile) {
           $module_list[$dependent] = 0;
         }
       }
@@ -683,7 +683,7 @@ function module_implements($hook, $sort = FALSE) {
     }
     // Allow modules to change the weight of specific implementations but avoid
     // an infinite loop.
-    if ($hook != 'module_implements_alter') {
+    if ($hook !== 'module_implements_alter') {
       drupal_alter('module_implements', $implementations[$hook], $hook);
     }
   }
@@ -740,7 +740,7 @@ function module_hook_info() {
   // case common.inc, subsystems, and modules are not loaded yet, so it does not
   // make sense to support hook groups resp. lazy-loaded include files prior to
   // full bootstrap.
-  if (drupal_bootstrap(NULL, FALSE) != DRUPAL_BOOTSTRAP_FULL) {
+  if (drupal_bootstrap(NULL, FALSE) !== DRUPAL_BOOTSTRAP_FULL) {
     return array();
   }
   $hook_info = &drupal_static(__FUNCTION__);
@@ -788,7 +788,7 @@ function module_implements_write_cache() {
   // Check whether we need to write the cache. We do not want to cache hooks
   // which are only invoked on HTTP POST requests since these do not need to be
   // optimized as tightly, and not doing so keeps the cache entry smaller.
-  if (isset($implementations['#write_cache']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD')) {
+  if (isset($implementations['#write_cache']) && ($_SERVER['REQUEST_METHOD'] === 'GET' || $_SERVER['REQUEST_METHOD'] === 'HEAD')) {
     unset($implementations['#write_cache']);
     cache('bootstrap')->set('module_implements', $implementations);
   }
diff --git a/core/includes/pager.inc b/core/includes/pager.inc
index c579e7e..6ca4d10 100644
--- a/core/includes/pager.inc
+++ b/core/includes/pager.inc
@@ -374,7 +374,7 @@ function theme_pager($variables) {
     }
 
     // When there is more than one page, create the pager list.
-    if ($i != $pager_max) {
+    if ($i !== $pager_max) {
       if ($i > 1) {
         $items[] = array(
           'class' => array('pager-ellipsis'),
@@ -389,7 +389,7 @@ function theme_pager($variables) {
             'data' => theme('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
           );
         }
-        if ($i == $pager_current) {
+        if ($i === $pager_current) {
           $items[] = array(
             'class' => array('pager-current'),
             'data' => $i,
@@ -493,7 +493,7 @@ function theme_pager_previous($variables) {
     $page_new = pager_load_array($pager_page_array[$element] - $interval, $element, $pager_page_array);
 
     // If the previous page is the first page, mark the link as such.
-    if ($page_new[$element] == 0) {
+    if ($page_new[$element] === 0) {
       $output = theme('pager_first', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
     }
     // The previous page is not the first page.
@@ -531,7 +531,7 @@ function theme_pager_next($variables) {
   if ($pager_page_array[$element] < ($pager_total[$element] - 1)) {
     $page_new = pager_load_array($pager_page_array[$element] + $interval, $element, $pager_page_array);
     // If the next page is the last page, mark the link as such.
-    if ($page_new[$element] == ($pager_total[$element] - 1)) {
+    if ($page_new[$element] === ($pager_total[$element] - 1)) {
       $output = theme('pager_last', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
     }
     // The next page is not the last page.
diff --git a/core/includes/password.inc b/core/includes/password.inc
index b052a4a..58377c7 100644
--- a/core/includes/password.inc
+++ b/core/includes/password.inc
@@ -153,17 +153,17 @@ function _password_crypt($algo, $password, $setting) {
   // The first 12 characters of an existing hash are its setting string.
   $setting = substr($setting, 0, 12);
 
-  if ($setting[0] != '$' || $setting[2] != '$') {
+  if ($setting[0] !== '$' || $setting[2] !== '$') {
     return FALSE;
   }
   $count_log2 = _password_get_count_log2($setting);
-  // Hashes may be imported from elsewhere, so we allow != DRUPAL_HASH_COUNT
+  // Hashes may be imported from elsewhere, so we allow !== DRUPAL_HASH_COUNT
   if ($count_log2 < DRUPAL_MIN_HASH_COUNT || $count_log2 > DRUPAL_MAX_HASH_COUNT) {
     return FALSE;
   }
   $salt = substr($setting, 4, 8);
   // Hashes must have an 8 character salt.
-  if (strlen($salt) != 8) {
+  if (strlen($salt) !== 8) {
     return FALSE;
   }
 
@@ -181,7 +181,7 @@ function _password_crypt($algo, $password, $setting) {
   // _password_base64_encode() of a 16 byte MD5 will always be 22 characters.
   // _password_base64_encode() of a 64 byte sha512 will always be 86 characters.
   $expected = 12 + ceil((8 * $len) / 6);
-  return (strlen($output) == $expected) ? substr($output, 0, DRUPAL_HASH_LENGTH) : FALSE;
+  return (strlen($output) === $expected) ? substr($output, 0, DRUPAL_HASH_LENGTH) : FALSE;
 }
 
 /**
@@ -228,7 +228,7 @@ function user_hash_password($password, $count_log2 = 0) {
  *   TRUE or FALSE.
  */
 function user_check_password($password, $account) {
-  if (substr($account->pass, 0, 2) == 'U$') {
+  if (substr($account->pass, 0, 2) === 'U$') {
     // This may be an updated password from user_update_7000(). Such hashes
     // have 'U' added as the first character and need an extra md5() (see the
     // Drupal 7 documentation).
@@ -255,7 +255,7 @@ function user_check_password($password, $account) {
     default:
       return FALSE;
   }
-  return ($hash && $stored_hash == $hash);
+  return ($hash && $stored_hash === $hash);
 }
 
 /**
@@ -278,7 +278,7 @@ function user_check_password($password, $account) {
  */
 function user_needs_new_hash($account) {
   // Check whether this was an updated password.
-  if ((substr($account->pass, 0, 3) != '$S$') || (strlen($account->pass) != DRUPAL_HASH_LENGTH)) {
+  if ((substr($account->pass, 0, 3) !== '$S$') || (strlen($account->pass) !== DRUPAL_HASH_LENGTH)) {
     return TRUE;
   }
   // Ensure that $count_log2 is within set bounds.
diff --git a/core/includes/path.inc b/core/includes/path.inc
index 223ab04..2ed5e14 100644
--- a/core/includes/path.inc
+++ b/core/includes/path.inc
@@ -76,12 +76,12 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
   // alias matching the URL path.
   $langcode = $langcode ? $langcode : $language_url->langcode;
 
-  if ($action == 'wipe') {
+  if ($action === 'wipe') {
     $cache = array();
     $cache['whitelist'] = drupal_path_alias_whitelist_rebuild();
   }
-  elseif ($cache['whitelist'] && $path != '') {
-    if ($action == 'alias') {
+  elseif ($cache['whitelist'] && $path !== '') {
+    if ($action === 'alias') {
       // During the first call to drupal_lookup_path() per language, load the
       // expected system paths for the page from cache.
       if (!empty($cache['first_call'])) {
@@ -105,7 +105,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
           // the most recently created alias for each source. Subsequent queries
           // using fetchField() must use pid DESC to have the same effect.
           // For performance reasons, the query builder is not used here.
-          if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+          if ($langcode === LANGUAGE_NOT_SPECIFIED) {
             // Prevent PDO from complaining about a token the query doesn't use.
             unset($args[':langcode']);
             $result = db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND langcode = :langcode_undetermined ORDER BY pid ASC', $args);
@@ -139,7 +139,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
           ':langcode_undetermined' => LANGUAGE_NOT_SPECIFIED,
         );
         // See the queries above.
-        if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+        if ($langcode === LANGUAGE_NOT_SPECIFIED) {
           unset($args[':langcode']);
           $alias = db_query("SELECT alias FROM {url_alias} WHERE source = :source AND langcode = :langcode_undetermined ORDER BY pid DESC", $args)->fetchField();
         }
@@ -155,7 +155,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
     }
     // Check $no_source for this $path in case we've already determined that there
     // isn't a path that has this alias
-    elseif ($action == 'source' && !isset($cache['no_source'][$langcode][$path])) {
+    elseif ($action === 'source' && !isset($cache['no_source'][$langcode][$path])) {
       // Look for the value $path within the cached $map
       $source = FALSE;
       if (!isset($cache['map'][$langcode]) || !($source = array_search($path, $cache['map'][$langcode]))) {
@@ -165,7 +165,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
           ':langcode_undetermined' => LANGUAGE_NOT_SPECIFIED,
         );
         // See the queries above.
-        if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+        if ($langcode === LANGUAGE_NOT_SPECIFIED) {
           unset($args[':langcode']);
           $result = db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND langcode = :langcode_undetermined ORDER BY pid DESC", $args);
         }
@@ -234,7 +234,7 @@ function drupal_cache_system_paths() {
  */
 function drupal_get_path_alias($path = NULL, $langcode = NULL) {
   // If no path is specified, use the current page's path.
-  if ($path == NULL) {
+  if ($path === NULL) {
     $path = $_GET['q'];
   }
   $result = $path;
@@ -292,7 +292,7 @@ function drupal_is_front_page() {
   if (!isset($is_front_page)) {
     // As drupal_path_initialize updates $_GET['q'] with the 'site_frontpage' path,
     // we can check it against the 'site_frontpage' variable.
-    $is_front_page = ($_GET['q'] == variable_get('site_frontpage', 'user'));
+    $is_front_page = ($_GET['q'] === variable_get('site_frontpage', 'user'));
   }
 
   return $is_front_page;
@@ -554,7 +554,7 @@ function drupal_valid_path($path, $dynamic_allowed = FALSE) {
   global $menu_admin;
   // We indicate that a menu administrator is running the menu access check.
   $menu_admin = TRUE;
-  if ($path == '<front>' || url_is_external($path)) {
+  if ($path === '<front>' || url_is_external($path)) {
     $item = array('access' => TRUE);
   }
   elseif ($dynamic_allowed && preg_match('/\/\%/', $path)) {
diff --git a/core/includes/registry.inc b/core/includes/registry.inc
index 0be69ff..7406044 100644
--- a/core/includes/registry.inc
+++ b/core/includes/registry.inc
@@ -123,7 +123,7 @@ function _registry_parse_files($files) {
   foreach ($files as $filename => $file) {
     if (file_exists($filename)) {
       $hash = hash_file('sha256', $filename);
-      if (empty($file['hash']) || $file['hash'] != $hash) {
+      if (empty($file['hash']) || $file['hash'] !== $hash) {
         // Delete registry entries for this file, so we can insert the new resources.
         db_delete('registry')
           ->condition('filename', $filename)
diff --git a/core/includes/schema.inc b/core/includes/schema.inc
index f698189..9b8bd67 100644
--- a/core/includes/schema.inc
+++ b/core/includes/schema.inc
@@ -93,7 +93,7 @@ function drupal_get_complete_schema($rebuild = FALSE) {
       drupal_alter('schema', $schema);
       // If the schema is empty, avoid saving it: some database engines require
       // the schema to perform queries, and this could lead to infinite loops.
-      if (!empty($schema) && (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL)) {
+      if (!empty($schema) && (drupal_get_bootstrap_phase() === DRUPAL_BOOTSTRAP_FULL)) {
         cache()->set('schema', $schema);
       }
       if ($rebuild) {
@@ -387,7 +387,7 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
 
   // Go through the schema to determine fields to write.
   foreach ($schema['fields'] as $field => $info) {
-    if ($info['type'] == 'serial') {
+    if ($info['type'] === 'serial') {
       // Skip serial types if we are updating.
       if (!empty($primary_keys)) {
         continue;
@@ -414,7 +414,7 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
     // always exist, as they cannot be unset. Therefore, if $field is a serial
     // type and the value is NULL, skip it.
     // @see http://php.net/manual/en/function.property-exists.php
-    if ($info['type'] == 'serial' && !isset($object->$field)) {
+    if ($info['type'] === 'serial' && !isset($object->$field)) {
       $default_fields[] = $field;
       continue;
     }
@@ -434,10 +434,10 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
     // into an integer column, but PostgreSQL PDO does not. Also type cast NULL
     // when the column does not allow this.
     if (isset($object->$field) || !empty($info['not null'])) {
-      if ($info['type'] == 'int' || $info['type'] == 'serial') {
+      if ($info['type'] === 'int' || $info['type'] === 'serial') {
         $fields[$field] = (int) $fields[$field];
       }
-      elseif ($info['type'] == 'float') {
+      elseif ($info['type'] === 'float') {
         $fields[$field] = (float) $fields[$field];
       }
       else {
@@ -484,7 +484,7 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
     if (isset($serial)) {
       // If the database was not told to return the last insert id, it will be
       // because we already know it.
-      if (isset($options) && $options['return'] != Database::RETURN_INSERT_ID) {
+      if (isset($options) && $options['return'] !== Database::RETURN_INSERT_ID) {
         $object->$serial = $fields[$serial];
       }
       else {
@@ -496,7 +496,7 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
   // query failed. Note that we explicitly check for FALSE, because
   // a valid update query which doesn't change any values will return
   // zero (0) affected rows.
-  elseif ($query_return === FALSE && count($primary_keys) == 1) {
+  elseif ($query_return === FALSE && count($primary_keys) === 1) {
     $return = FALSE;
   }
 
diff --git a/core/includes/session.inc b/core/includes/session.inc
index b07997c..dacaf5b 100644
--- a/core/includes/session.inc
+++ b/core/includes/session.inc
@@ -104,7 +104,7 @@ function _drupal_session_read($sid) {
 
   // We found the client's session record and they are an authenticated,
   // active user.
-  if ($user && $user->uid > 0 && $user->status == 1) {
+  if ($user && $user->uid > 0 && $user->status === 1) {
     // This is done to unserialize the data member of $user.
     $user->data = unserialize($user->data);
 
@@ -168,7 +168,7 @@ function _drupal_session_write($sid, $value) {
 
     // Check whether $_SESSION has been changed in this request.
     $last_read = &drupal_static('drupal_session_last_read');
-    $is_changed = !isset($last_read) || $last_read['sid'] != $sid || $last_read['value'] !== $value;
+    $is_changed = !isset($last_read) || $last_read['sid'] !== $sid || $last_read['value'] !== $value;
 
     // For performance reasons, do not update the sessions table, unless
     // $_SESSION has changed or more than 180 has passed since the last update.
diff --git a/core/includes/tablesort.inc b/core/includes/tablesort.inc
index 3c70b96..1c6a0b5 100644
--- a/core/includes/tablesort.inc
+++ b/core/includes/tablesort.inc
@@ -136,12 +136,12 @@ function tablesort_header($cell, $header, $ts) {
   // Special formatting for the currently sorted column header.
   if (is_array($cell) && isset($cell['field'])) {
     $title = t('sort by @s', array('@s' => $cell['data']));
-    if ($cell['data'] == $ts['name']) {
+    if ($cell['data'] === $ts['name']) {
       // aria-sort is a WAI-ARIA property that indicates if items in a table
       // or grid are sorted in ascending or descending order. See
       // http://www.w3.org/TR/wai-aria/states_and_properties#aria-sort
-      $cell['aria-sort'] = ($ts['sort'] == 'asc') ? 'ascending' : 'descending';
-      $ts['sort'] = (($ts['sort'] == 'asc') ? 'desc' : 'asc');
+      $cell['aria-sort'] = ($ts['sort'] === 'asc') ? 'ascending' : 'descending';
+      $ts['sort'] = (($ts['sort'] === 'asc') ? 'desc' : 'asc');
       $cell['class'][] = 'active';
       $image = theme('tablesort_indicator', array('style' => $ts['sort']));
     }
@@ -174,7 +174,7 @@ function tablesort_header($cell, $header, $ts) {
  *   A properly formatted cell, ready for _theme_table_cell().
  */
 function tablesort_cell($cell, $header, $ts, $i) {
-  if (isset($header[$i]['data']) && $header[$i]['data'] == $ts['name'] && !empty($header[$i]['field'])) {
+  if (isset($header[$i]['data']) && $header[$i]['data'] === $ts['name'] && !empty($header[$i]['field'])) {
     if (is_array($cell)) {
       $cell['class'][] = 'active';
     }
@@ -210,12 +210,12 @@ function tablesort_get_order($headers) {
   $order = isset($_GET['order']) ? $_GET['order'] : '';
   foreach ($headers as $header) {
     if (is_array($header)) {
-      if (isset($header['data']) && $order == $header['data']) {
+      if (isset($header['data']) && $order === $header['data']) {
         $default = $header;
         break;
       }
 
-      if (empty($default) && isset($header['sort']) && ($header['sort'] == 'asc' || $header['sort'] == 'desc')) {
+      if (empty($default) && isset($header['sort']) && ($header['sort'] === 'asc' || $header['sort'] === 'desc')) {
         $default = $header;
       }
     }
@@ -242,7 +242,7 @@ function tablesort_get_order($headers) {
  */
 function tablesort_get_sort($headers) {
   if (isset($_GET['sort'])) {
-    return (strtolower($_GET['sort']) == 'desc') ? 'desc' : 'asc';
+    return (strtolower($_GET['sort']) === 'desc') ? 'desc' : 'asc';
   }
   // The user has not specified a sort. Use the default for the currently sorted
   // header if specified; otherwise use "asc".
@@ -250,7 +250,7 @@ function tablesort_get_sort($headers) {
     // Find out which header is currently being sorted.
     $ts = tablesort_get_order($headers);
     foreach ($headers as $header) {
-      if (is_array($header) && isset($header['data']) && $header['data'] == $ts['name'] && isset($header['sort'])) {
+      if (is_array($header) && isset($header['data']) && $header['data'] === $ts['name'] && isset($header['sort'])) {
         return $header['sort'];
       }
     }
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index f5c25f9..52bf24e 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -61,7 +61,7 @@ function drupal_theme_access($theme) {
  */
 function _drupal_theme_access($theme) {
   $admin_theme = variable_get('admin_theme');
-  return !empty($theme->status) || ($admin_theme && $theme->name == $admin_theme);
+  return !empty($theme->status) || ($admin_theme && $theme->name === $admin_theme);
 }
 
 /**
@@ -365,7 +365,7 @@ class ThemeRegistry Extends CacheArray {
   function __construct($cid, $bin) {
     $this->cid = $cid;
     $this->bin = $bin;
-    $this->persistable = module_load_all(NULL) && $_SERVER['REQUEST_METHOD'] == 'GET';
+    $this->persistable = module_load_all(NULL) && $_SERVER['REQUEST_METHOD'] === 'GET';
 
     $data = array();
     if ($this->persistable && $cached = cache($this->bin)->get($this->cid)) {
@@ -532,7 +532,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
       // If function and file are omitted, default to standard naming
       // conventions.
       if (!isset($info['template']) && !isset($info['function'])) {
-        $result[$hook]['function'] = ($type == 'module' ? 'theme_' : $name . '_') . $hook;
+        $result[$hook]['function'] = ($type === 'module' ? 'theme_' : $name . '_') . $hook;
       }
 
       if (isset($cache[$hook]['includes'])) {
@@ -571,7 +571,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
         if (!isset($info[$phase_key]) || !is_array($info[$phase_key])) {
           $info[$phase_key] = array();
           $prefixes = array();
-          if ($type == 'module') {
+          if ($type === 'module') {
             // Default variable processor prefix.
             $prefixes[] = 'template';
             // Add all modules so they can intervene with their own variable
@@ -579,7 +579,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
             // if they are not the owner of the current hook.
             $prefixes += module_list();
           }
-          elseif ($type == 'theme_engine' || $type == 'base_theme_engine') {
+          elseif ($type === 'theme_engine' || $type === 'base_theme_engine') {
             // Theme engines get an extra set that come before the normally
             // named variable processors.
             $prefixes[] = $name . '_engine';
@@ -622,7 +622,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
   }
 
   // Let themes have variable processors even if they didn't register a template.
-  if ($type == 'theme' || $type == 'base_theme') {
+  if ($type === 'theme' || $type === 'base_theme') {
     foreach ($cache as $hook => $info) {
       // Check only if not registered by the theme or engine.
       if (empty($result[$hook])) {
@@ -1103,7 +1103,7 @@ function theme($hook, $variables = array()) {
     // The theme engine may use a different extension and a different renderer.
     global $theme_engine;
     if (isset($theme_engine)) {
-      if ($info['type'] != 'module') {
+      if ($info['type'] !== 'module') {
         if (function_exists($theme_engine . '_render_template')) {
           $render_function = $theme_engine . '_render_template';
         }
@@ -1725,17 +1725,17 @@ function theme_links($variables) {
       $class[] = drupal_html_class($key);
       // Add odd/even, first, and last classes.
       $class[] = ($i % 2 ? 'odd' : 'even');
-      if ($i == 1) {
+      if ($i === 1) {
         $class[] = 'first';
       }
-      if ($i == $num_links) {
+      if ($i === $num_links) {
         $class[] = 'last';
       }
 
       // Handle links.
       if (isset($link['href'])) {
-        $is_current_path = ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()));
-        $is_current_language = (empty($link['language']) || $link['language']->langcode == $language_url->langcode);
+        $is_current_path = ($link['href'] === $_GET['q'] || ($link['href'] === '<front>' && drupal_is_front_page()));
+        $is_current_language = (empty($link['language']) || $link['language']->langcode === $language_url->langcode);
         if ($is_current_path && $is_current_language) {
           $class[] = 'active';
         }
@@ -1928,7 +1928,7 @@ function theme_table($variables) {
       // Check if we're dealing with a simple or complex column
       if (isset($colgroup['data'])) {
         foreach ($colgroup as $key => $value) {
-          if ($key == 'data') {
+          if ($key === 'data') {
             $cols = $value;
           }
           else {
@@ -1997,7 +1997,7 @@ function theme_table($variables) {
       // Check if we're dealing with a simple or complex row
       if (isset($row['data'])) {
         foreach ($row as $key => $value) {
-          if ($key == 'data') {
+          if ($key === 'data') {
             $cells = $value;
           }
           else {
@@ -2040,7 +2040,7 @@ function theme_table($variables) {
  *   - style: Set to either 'asc' or 'desc', this determines which icon to show.
  */
 function theme_tablesort_indicator($variables) {
-  if ($variables['style'] == "asc") {
+  if ($variables['style'] === "asc") {
     return theme('image', array('uri' => 'core/misc/arrow-asc.png', 'width' => 13, 'height' => 13, 'alt' => t('sort ascending'), 'title' => t('sort ascending')));
   }
   else {
@@ -2060,10 +2060,10 @@ function theme_mark($variables) {
   $type = $variables['type'];
   global $user;
   if ($user->uid) {
-    if ($type == MARK_NEW) {
+    if ($type === MARK_NEW) {
       return ' <span class="marker">' . t('new') . '</span>';
     }
-    elseif ($type == MARK_UPDATED) {
+    elseif ($type === MARK_UPDATED) {
       return ' <span class="marker">' . t('updated') . '</span>';
     }
   }
@@ -2133,10 +2133,10 @@ function theme_item_list($variables) {
       }
 
       $attributes['class'][] = ($i % 2 ? 'odd' : 'even');
-      if ($i == 1) {
+      if ($i === 1) {
         $attributes['class'][] = 'first';
       }
-      if ($i == $num_items) {
+      if ($i === $num_items) {
         $attributes['class'][] = 'last';
       }
 
@@ -2490,7 +2490,7 @@ function template_preprocess_html(&$variables) {
   // Populate the body classes.
   if ($suggestions = theme_get_suggestions(arg(), 'page', '-')) {
     foreach ($suggestions as $suggestion) {
-      if ($suggestion != 'page-front') {
+      if ($suggestion !== 'page-front') {
         // Add current suggestion to page classes to make it possible to theme
         // the page depending on the current page type (e.g. node, admin, user,
         // etc.) as well as more specific data like node-12 or node-edit.
@@ -2574,7 +2574,7 @@ function template_preprocess_page(&$variables) {
     $variables['layout'] = 'first';
   }
   if (!empty($variables['page']['sidebar_second'])) {
-    $variables['layout'] = ($variables['layout'] == 'first') ? 'both' : 'second';
+    $variables['layout'] = ($variables['layout'] === 'first') ? 'both' : 'second';
   }
 
   $variables['base_path']         = base_path();
@@ -2765,7 +2765,7 @@ function template_preprocess_maintenance_page(&$variables) {
     $variables['layout'] = 'first';
   }
   if (!empty($variables['sidebar_second'])) {
-    $variables['layout'] = ($variables['layout'] == 'first') ? 'both' : 'second';
+    $variables['layout'] = ($variables['layout'] === 'first') ? 'both' : 'second';
   }
 
   // Construct page title
@@ -2808,10 +2808,10 @@ function template_preprocess_maintenance_page(&$variables) {
   if (isset($variables['db_is_active']) && !$variables['db_is_active']) {
     $variables['classes_array'][] = 'db-offline';
   }
-  if ($variables['layout'] == 'both') {
+  if ($variables['layout'] === 'both') {
     $variables['classes_array'][] = 'two-sidebars';
   }
-  elseif ($variables['layout'] == 'none') {
+  elseif ($variables['layout'] === 'none') {
     $variables['classes_array'][] = 'no-sidebars';
   }
   else {
diff --git a/core/includes/theme.maintenance.inc b/core/includes/theme.maintenance.inc
index 3fd60c9..4e7f23e 100644
--- a/core/includes/theme.maintenance.inc
+++ b/core/includes/theme.maintenance.inc
@@ -31,7 +31,7 @@ function _drupal_maintenance_theme() {
   unicode_check();
 
   // Install and update pages are treated differently to prevent theming overrides.
-  if (defined('MAINTENANCE_MODE') && (MAINTENANCE_MODE == 'install' || MAINTENANCE_MODE == 'update')) {
+  if (defined('MAINTENANCE_MODE') && (MAINTENANCE_MODE === 'install' || MAINTENANCE_MODE === 'update')) {
     $custom_theme = (isset($conf['maintenance_theme']) ? $conf['maintenance_theme'] : 'seven');
   }
   else {
@@ -109,12 +109,12 @@ function theme_task_list($variables) {
   $items = $variables['items'];
   $active = $variables['active'];
 
-  $done = isset($items[$active]) || $active == NULL;
+  $done = isset($items[$active]) || $active === NULL;
   $output = '<h2 class="element-invisible">Installation tasks</h2>';
   $output .= '<ol class="task-list">';
 
   foreach ($items as $k => $item) {
-    if ($active == $k) {
+    if ($active === $k) {
       $class = 'active';
       $status = '(' . t('active') . ')';
       $done = FALSE;
diff --git a/core/includes/token.inc b/core/includes/token.inc
index 5c74519..2766758 100644
--- a/core/includes/token.inc
+++ b/core/includes/token.inc
@@ -201,7 +201,7 @@ function token_generate($type, array $tokens, array $data = array(), array $opti
  *     'created'     => '[node:created]',
  *   );
  *   $results = token_find_with_prefix($data, 'author');
- *   $results == array('name' => '[node:author:name]');
+ *   $results === array('name' => '[node:author:name]');
  * @endcode
  *
  * @param $tokens
@@ -220,7 +220,7 @@ function token_find_with_prefix(array $tokens, $prefix, $delimiter = ':') {
   $results = array();
   foreach ($tokens as $token => $raw) {
     $parts = explode($delimiter, $token, 2);
-    if (count($parts) == 2 && $parts[0] == $prefix) {
+    if (count($parts) === 2 && $parts[0] === $prefix) {
       $results[$parts[1]] = $raw;
     }
   }
diff --git a/core/includes/unicode.inc b/core/includes/unicode.inc
index 1450b43..03c1ae8 100644
--- a/core/includes/unicode.inc
+++ b/core/includes/unicode.inc
@@ -105,16 +105,16 @@ function _unicode_check() {
   }
 
   // Check mbstring configuration
-  if (ini_get('mbstring.func_overload') != 0) {
+  if (ini_get('mbstring.func_overload') !== 0) {
     return array(UNICODE_ERROR, $t('Multibyte string function overloading in PHP is active and must be disabled. Check the php.ini <em>mbstring.func_overload</em> setting. Please refer to the <a href="@url">PHP mbstring documentation</a> for more information.', array('@url' => 'http://www.php.net/mbstring')));
   }
-  if (ini_get('mbstring.encoding_translation') != 0) {
+  if (ini_get('mbstring.encoding_translation') !== 0) {
     return array(UNICODE_ERROR, $t('Multibyte string input conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.encoding_translation</em> setting. Please refer to the <a href="@url">PHP mbstring documentation</a> for more information.', array('@url' => 'http://www.php.net/mbstring')));
   }
-  if (ini_get('mbstring.http_input') != 'pass') {
+  if (ini_get('mbstring.http_input') !== 'pass') {
     return array(UNICODE_ERROR, $t('Multibyte string input conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.http_input</em> setting. Please refer to the <a href="@url">PHP mbstring documentation</a> for more information.', array('@url' => 'http://www.php.net/mbstring')));
   }
-  if (ini_get('mbstring.http_output') != 'pass') {
+  if (ini_get('mbstring.http_output') !== 'pass') {
     return array(UNICODE_ERROR, $t('Multibyte string output conversion in PHP is active and must be disabled. Check the php.ini <em>mbstring.http_output</em> setting. Please refer to the <a href="@url">PHP mbstring documentation</a> for more information.', array('@url' => 'http://www.php.net/mbstring')));
   }
 
@@ -395,7 +395,7 @@ function mime_header_encode($string) {
  */
 function mime_header_decode($header) {
   // First step: encoded chunks followed by other encoded chunks (need to collapse whitespace)
-  $header = preg_replace_callback('/=\?([^?]+)\?(Q|B)\?([^?]+|\?(?!=))\?=\s+(?==\?)/', '_mime_header_decode', $header);
+  $header = preg_replace_callback('/=\?([^?]+)\?(Q|B)\?([^?]+|\?(?!=))\?=\s+(?===\?)/', '_mime_header_decode', $header);
   // Second step: remaining chunks (do not collapse whitespace)
   return preg_replace_callback('/=\?([^?]+)\?(Q|B)\?([^?]+|\?(?!=))\?=/', '_mime_header_decode', $header);
 }
@@ -408,8 +408,8 @@ function _mime_header_decode($matches) {
   // 1: Character set name
   // 2: Escaping method (Q or B)
   // 3: Encoded data
-  $data = ($matches[2] == 'B') ? base64_decode($matches[3]) : str_replace('_', ' ', quoted_printable_decode($matches[3]));
-  if (strtolower($matches[1]) != 'utf-8') {
+  $data = ($matches[2] === 'B') ? base64_decode($matches[3]) : str_replace('_', ' ', quoted_printable_decode($matches[3]));
+  if (strtolower($matches[1]) !== 'utf-8') {
     $data = drupal_convert_to_utf8($data, $matches[1]);
   }
   return $data;
@@ -440,7 +440,7 @@ function decode_entities($text) {
  */
 function drupal_strlen($text) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return mb_strlen($text);
   }
   else {
@@ -456,7 +456,7 @@ function drupal_strlen($text) {
  */
 function drupal_strtoupper($text) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return mb_strtoupper($text);
   }
   else {
@@ -475,7 +475,7 @@ function drupal_strtoupper($text) {
  */
 function drupal_strtolower($text) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return mb_strtolower($text);
   }
   else {
@@ -517,7 +517,7 @@ function drupal_ucfirst($text) {
  */
 function drupal_substr($text, $start, $length = NULL) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return $length === NULL ? mb_substr($text, $start) : mb_substr($text, $start, $length);
   }
   else {
@@ -595,7 +595,7 @@ function drupal_substr($text, $start, $length = NULL) {
       }
     }
     else {
-      // $length == 0, return an empty string.
+      // $length === 0, return an empty string.
       return '';
     }
 
diff --git a/core/includes/update.inc b/core/includes/update.inc
index 2715fdf..931ba71 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -54,15 +54,15 @@ function update_check_incompatibility($name, $type = 'module') {
     $modules = system_rebuild_module_data();
   }
 
-  if ($type == 'module' && isset($modules[$name])) {
+  if ($type === 'module' && isset($modules[$name])) {
     $file = $modules[$name];
   }
-  elseif ($type == 'theme' && isset($themes[$name])) {
+  elseif ($type === 'theme' && isset($themes[$name])) {
     $file = $themes[$name];
   }
   if (!isset($file)
       || !isset($file->info['core'])
-      || $file->info['core'] != DRUPAL_CORE_COMPATIBILITY
+      || $file->info['core'] !== DRUPAL_CORE_COMPATIBILITY
       || version_compare(phpversion(), $file->info['php']) < 0) {
     return TRUE;
   }
@@ -143,7 +143,7 @@ function update_prepare_stored_includes() {
   foreach (language_types_get_all() as $language_type) {
     $negotiation = variable_get("language_negotiation_$language_type", array());
     foreach ($negotiation as $method_id => &$method) {
-      if (isset($method['file']) && $method['file'] == 'includes/locale.inc') {
+      if (isset($method['file']) && $method['file'] === 'includes/locale.inc') {
         $method['file'] = 'core/modules/language/language.negotiation.inc';
       }
     }
@@ -374,7 +374,7 @@ function update_do_one($module, $number, $dependency_map, &$context) {
   }
 
   // Record the schema update if it was completed successfully.
-  if ($context['finished'] == 1 && empty($ret['#abort'])) {
+  if ($context['finished'] === 1 && empty($ret['#abort'])) {
     drupal_set_installed_schema_version($module, $number);
   }
 
@@ -412,7 +412,7 @@ function update_batch($start, $redirect = NULL, $url = NULL, $batch = array(), $
   // During the update, bring the site offline so that schema changes do not
   // affect visiting users.
   $_SESSION['maintenance_mode'] = variable_get('maintenance_mode', FALSE);
-  if ($_SESSION['maintenance_mode'] == FALSE) {
+  if ($_SESSION['maintenance_mode'] === FALSE) {
     variable_set('maintenance_mode', TRUE);
   }
 
@@ -483,7 +483,7 @@ function update_finished($success, $results, $operations) {
 
   // Now that the update is done, we can put the site back online if it was
   // previously in maintenance mode.
-  if (isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] == FALSE) {
+  if (isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] === FALSE) {
     variable_set('maintenance_mode', FALSE);
     unset($_SESSION['maintenance_mode']);
   }
@@ -514,14 +514,14 @@ function update_get_update_list() {
   $modules = drupal_get_installed_schema_version(NULL, FALSE, TRUE);
   foreach ($modules as $module => $schema_version) {
     // Skip uninstalled and incompatible modules.
-    if ($schema_version == SCHEMA_UNINSTALLED || update_check_incompatibility($module)) {
+    if ($schema_version === SCHEMA_UNINSTALLED || update_check_incompatibility($module)) {
       continue;
     }
     // Otherwise, get the list of updates defined by this module.
     $updates = drupal_get_schema_versions($module);
     if ($updates !== FALSE) {
       // module_invoke returns NULL for nonexisting hooks, so if no updates
-      // are removed, it will == 0.
+      // are removed, it will === 0.
       $last_removed = module_invoke($module, 'update_last_removed');
       if ($schema_version < $last_removed) {
         $ret[$module]['warning'] = '<em>' . $module . '</em> module can not be updated. Its schema version is ' . $schema_version . '. Updates up to and including ' . $last_removed . ' have been removed in this release. In order to update <em>' . $module . '</em> module, you will first <a href="http://drupal.org/upgrade">need to upgrade</a> to the last version in which these updates were available.';
diff --git a/core/includes/utility.inc b/core/includes/utility.inc
index d44e4dd..d19e781 100644
--- a/core/includes/utility.inc
+++ b/core/includes/utility.inc
@@ -23,7 +23,7 @@ function drupal_var_export($var, $prefix = '') {
     else {
       $output = "array(\n";
       // Don't export keys if the array is non associative.
-      $export_keys = array_values($var) != $var;
+      $export_keys = array_values($var) !== $var;
       foreach ($var as $key => $value) {
         $output .= '  ' . ($export_keys ? drupal_var_export($key) . ' => ' : '') . drupal_var_export($value, '  ', FALSE) . ",\n";
       }
diff --git a/core/includes/xmlrpc.inc b/core/includes/xmlrpc.inc
index b1c6f39..a85a266 100644
--- a/core/includes/xmlrpc.inc
+++ b/core/includes/xmlrpc.inc
@@ -29,13 +29,13 @@ function xmlrpc_value($data, $type = FALSE) {
     $type = xmlrpc_value_calculate_type($xmlrpc_value);
   }
   $xmlrpc_value->type = $type;
-  if ($type == 'struct') {
+  if ($type === 'struct') {
     // Turn all the values in the array into new xmlrpc_values
     foreach ($xmlrpc_value->data as $key => $value) {
       $xmlrpc_value->data[$key] = xmlrpc_value($value);
     }
   }
-  if ($type == 'array') {
+  if ($type === 'array') {
     for ($i = 0, $j = count($xmlrpc_value->data); $i < $j; $i++) {
       $xmlrpc_value->data[$i] = xmlrpc_value($xmlrpc_value->data[$i]);
     }
@@ -188,7 +188,7 @@ function xmlrpc_message_parse($xmlrpc_message) {
   if (!isset($xmlrpc_message->messagetype)) {
     return FALSE;
   }
-  elseif ($xmlrpc_message->messagetype == 'fault') {
+  elseif ($xmlrpc_message->messagetype === 'fault') {
     $xmlrpc_message->fault_code = $xmlrpc_message->params[0]['faultCode'];
     $xmlrpc_message->fault_string = $xmlrpc_message->params[0]['faultString'];
   }
@@ -295,7 +295,7 @@ function xmlrpc_message_tag_close($parser, $tag) {
     case 'value':
       // If no type is indicated, the type is string
       // We take special care for empty values
-      if (trim($xmlrpc_message->current_tag_contents) != '' || (isset($xmlrpc_message->last_open) && ($xmlrpc_message->last_open == 'value'))) {
+      if (trim($xmlrpc_message->current_tag_contents) !== '' || (isset($xmlrpc_message->last_open) && ($xmlrpc_message->last_open === 'value'))) {
         $value = (string) $xmlrpc_message->current_tag_contents;
         $value_flag = TRUE;
       }
@@ -335,7 +335,7 @@ function xmlrpc_message_tag_close($parser, $tag) {
   if ($value_flag) {
     if (count($xmlrpc_message->array_structs) > 0) {
       // Add value to struct or array
-      if ($xmlrpc_message->array_structs_types[count($xmlrpc_message->array_structs_types) - 1] == 'struct') {
+      if ($xmlrpc_message->array_structs_types[count($xmlrpc_message->array_structs_types) - 1] === 'struct') {
         // Add to struct
         $xmlrpc_message->array_structs[count($xmlrpc_message->array_structs) - 1][$xmlrpc_message->current_struct_name[count($xmlrpc_message->current_struct_name) - 1]] = $value;
       }
@@ -563,7 +563,7 @@ function _xmlrpc($url, $args, $options = array()) {
   $options['headers']['Content-Type'] = 'text/xml';
   $options['data'] = $xmlrpc_request->xml;
   $result = drupal_http_request($url, $options);
-  if ($result->code != 200) {
+  if ($result->code !== 200) {
     xmlrpc_error($result->code, $result->error);
     return FALSE;
   }
@@ -575,16 +575,16 @@ function _xmlrpc($url, $args, $options = array()) {
     return FALSE;
   }
   // Is the message a fault?
-  if ($message->messagetype == 'fault') {
+  if ($message->messagetype === 'fault') {
     xmlrpc_error($message->fault_code, $message->fault_string);
     return FALSE;
   }
   // We now know that the message is well-formed and a non-fault result.
-  if ($method == 'system.multicall') {
+  if ($method === 'system.multicall') {
     // Return per-method results or error objects.
     $return = array();
     foreach ($message->params[0] as $result) {
-      if (array_keys($result) == array(0)) {
+      if (array_keys($result) === array(0)) {
         $return[] = $result[0];
       }
       else {
@@ -603,7 +603,7 @@ function _xmlrpc($url, $args, $options = array()) {
  */
 function xmlrpc_errno() {
   $error = xmlrpc_error();
-  return ($error != NULL ? $error->code : NULL);
+  return ($error !== NULL ? $error->code : NULL);
 }
 
 /**
@@ -611,7 +611,7 @@ function xmlrpc_errno() {
  */
 function xmlrpc_error_msg() {
   $error = xmlrpc_error();
-  return ($error != NULL ? $error->message : NULL);
+  return ($error !== NULL ? $error->message : NULL);
 }
 
 /**
diff --git a/core/includes/xmlrpcs.inc b/core/includes/xmlrpcs.inc
index 118f652..9a2787f 100644
--- a/core/includes/xmlrpcs.inc
+++ b/core/includes/xmlrpcs.inc
@@ -70,7 +70,7 @@ function xmlrpc_server($callbacks) {
   if (!xmlrpc_message_parse($xmlrpc_server->message)) {
     xmlrpc_server_error(-32700, t('Parse error. Request not well formed.'));
   }
-  if ($xmlrpc_server->message->messagetype != 'methodCall') {
+  if ($xmlrpc_server->message->messagetype !== 'methodCall') {
     xmlrpc_server_error(-32600, t('Server error. Invalid XML-RPC. Request must be a methodCall.'));
   }
   if (!isset($xmlrpc_server->message->params)) {
@@ -192,7 +192,7 @@ function xmlrpc_server_call($xmlrpc_server, $methodname, $args) {
     $ok = TRUE;
     $return_type = array_shift($signature);
     // Check the number of arguments
-    if (count($args) != count($signature)) {
+    if (count($args) !== count($signature)) {
       return xmlrpc_error(-32602, t('Server error. Wrong number of method parameters.'));
     }
     // Check the argument types
@@ -272,7 +272,7 @@ function xmlrpc_server_multicall($methodcalls) {
     }
     $method = $call['methodName'];
     $params = $call['params'];
-    if ($method == 'system.multicall') {
+    if ($method === 'system.multicall') {
       $result = xmlrpc_error(-32600, t('Recursive calls to system.multicall are forbidden.'));
     }
     elseif ($ok) {
diff --git a/core/lib/Drupal/Component/Graph/Graph.php b/core/lib/Drupal/Component/Graph/Graph.php
index 8fc7d21..ab613a0 100644
--- a/core/lib/Drupal/Component/Graph/Graph.php
+++ b/core/lib/Drupal/Component/Graph/Graph.php
@@ -125,7 +125,7 @@ class Graph {
         // Mark that $start can reach $end.
         $this->graph[$start]['paths'][$end] = $v;
 
-        if (isset($this->graph[$end]['component']) && $component != $this->graph[$end]['component']) {
+        if (isset($this->graph[$end]['component']) && $component !== $this->graph[$end]['component']) {
           // This vertex already has a component, use that from now on and
           // reassign all the previously explored vertices.
           $new_component = $this->graph[$end]['component'];
diff --git a/core/lib/Drupal/Core/Cache/DatabaseBackend.php b/core/lib/Drupal/Core/Cache/DatabaseBackend.php
index 9416548..7ebabcb 100644
--- a/core/lib/Drupal/Core/Cache/DatabaseBackend.php
+++ b/core/lib/Drupal/Core/Cache/DatabaseBackend.php
@@ -33,7 +33,7 @@ class DatabaseBackend implements CacheBackendInterface {
   function __construct($bin) {
     // All cache tables should be prefixed with 'cache_', except for the
     // default 'cache' bin.
-    if ($bin != 'cache') {
+    if ($bin !== 'cache') {
       $bin = 'cache_' . $bin;
     }
     $this->bin = $bin;
@@ -104,7 +104,7 @@ class DatabaseBackend implements CacheBackendInterface {
     // lifetime, compare the cache entry timestamp with the user session
     // cache_expiration timestamp. If the cache entry is too old, ignore it.
     $config = config('system.performance');
-    if ($cache->expire != CACHE_PERMANENT && $config->get('cache_lifetime') && isset($_SESSION['cache_expiration'][$this->bin]) && $_SESSION['cache_expiration'][$this->bin] > $cache->created) {
+    if ($cache->expire !== CACHE_PERMANENT && $config->get('cache_lifetime') && isset($_SESSION['cache_expiration'][$this->bin]) && $_SESSION['cache_expiration'][$this->bin] > $cache->created) {
       // Ignore cache data that is too old and thus not valid for this user.
       return FALSE;
     }
@@ -206,7 +206,7 @@ class DatabaseBackend implements CacheBackendInterface {
       $_SESSION['cache_expiration'][$this->bin] = REQUEST_TIME;
 
       $cache_flush = variable_get('cache_flush_' . $this->bin, 0);
-      if ($cache_flush == 0) {
+      if ($cache_flush === 0) {
         // This is the first request to clear the cache, start a timer.
         variable_set('cache_flush_' . $this->bin, REQUEST_TIME);
       }
diff --git a/core/lib/Drupal/Core/Config/DrupalConfig.php b/core/lib/Drupal/Core/Config/DrupalConfig.php
index 9fc33aa..a32373d 100644
--- a/core/lib/Drupal/Core/Config/DrupalConfig.php
+++ b/core/lib/Drupal/Core/Config/DrupalConfig.php
@@ -102,7 +102,7 @@ class DrupalConfig {
     }
     else {
       $parts = explode('.', $key);
-      if (count($parts) == 1) {
+      if (count($parts) === 1) {
         return isset($merged_data[$key]) ? $merged_data[$key] : NULL;
       }
       else {
@@ -133,7 +133,7 @@ class DrupalConfig {
     $value = $this->castValue($value);
 
     $parts = explode('.', $key);
-    if (count($parts) == 1) {
+    if (count($parts) === 1) {
       $this->data[$key] = $value;
     }
     else {
@@ -189,7 +189,7 @@ class DrupalConfig {
    */
   public function clear($key) {
     $parts = explode('.', $key);
-    if (count($parts) == 1) {
+    if (count($parts) === 1) {
       unset($this->data[$key]);
     }
     else {
diff --git a/core/lib/Drupal/Core/Database/Connection.php b/core/lib/Drupal/Core/Database/Connection.php
index 3805864..cf22ae8 100644
--- a/core/lib/Drupal/Core/Database/Connection.php
+++ b/core/lib/Drupal/Core/Database/Connection.php
@@ -241,7 +241,7 @@ abstract class Connection extends PDO {
     $this->prefixSearch = array();
     $this->prefixReplace = array();
     foreach ($this->prefixes as $key => $val) {
-      if ($key != 'default') {
+      if ($key !== 'default') {
         $this->prefixSearch[] = '{' . $key . '}';
         $this->prefixReplace[] = $val . $key;
       }
@@ -858,7 +858,7 @@ abstract class Connection extends PDO {
     // we need to throw an exception.
     $rolled_back_other_active_savepoints = FALSE;
     while ($savepoint = array_pop($this->transactionLayers)) {
-      if ($savepoint == $savepoint_name) {
+      if ($savepoint === $savepoint_name) {
         // If it is the last the transaction in the stack, then it is not a
         // savepoint, it is the transaction itself so we will need to roll back
         // the transaction rather than a savepoint.
diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
index 0e7ab72..a4a0b9d 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
@@ -188,7 +188,7 @@ class Connection extends DatabaseConnection {
           //
           // To avoid exceptions when no actual error has occurred, we silently
           // succeed for MySQL error code 1305 ("SAVEPOINT does not exist").
-          if ($e->errorInfo[1] == '1305') {
+          if ($e->errorInfo[1] === '1305') {
             // If one SAVEPOINT was released automatically, then all were.
             // Therefore, clean the transaction stack.
             $this->transactionLayers = array();
diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php
index f5e493d..e017f17 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Schema.php
@@ -209,7 +209,7 @@ class Schema extends DatabaseSchema {
       $field['mysql_type'] = $map[$field['type'] . ':' . $field['size']];
     }
 
-    if (isset($field['type']) && $field['type'] == 'serial') {
+    if (isset($field['type']) && $field['type'] === 'serial') {
       $field['auto_increment'] = TRUE;
     }
 
@@ -457,7 +457,7 @@ class Schema extends DatabaseSchema {
     if (!$this->fieldExists($table, $field)) {
       throw new SchemaObjectDoesNotExistException(t("Cannot change the definition of field %table.%name: field doesn't exist.", array('%table' => $table, '%name' => $field)));
     }
-    if (($field != $field_new) && $this->fieldExists($table, $field_new)) {
+    if (($field !== $field_new) && $this->fieldExists($table, $field_new)) {
       throw new SchemaObjectExistsException(t("Cannot rename field %table.%name to %name_new: target field already exists.", array('%table' => $table, '%name' => $field, '%name_new' => $field_new)));
     }
 
diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Insert.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Insert.php
index dffa1fd..d6afa19 100644
--- a/core/lib/Drupal/Core/Database/Driver/pgsql/Insert.php
+++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Insert.php
@@ -57,7 +57,7 @@ class Insert extends QueryInsert {
 
             // Force $last_insert_id to the specified value. This is only done
             // if $index is 0.
-            if ($index == 0) {
+            if ($index === 0) {
               $last_insert_id = $serial_value;
             }
             // Set the sequence to the bigger value of either the passed
@@ -91,7 +91,7 @@ class Insert extends QueryInsert {
       $options['sequence_name'] = $table_information->sequences[0];
     }
     // If there are no sequences then we can't get a last insert id.
-    elseif ($options['return'] == Database::RETURN_INSERT_ID) {
+    elseif ($options['return'] === Database::RETURN_INSERT_ID) {
       $options['return'] = Database::RETURN_NULL;
     }
     // Only use the returned last_insert_id if it is not already set.
diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Install/Tasks.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Install/Tasks.php
index ae2db87..4440fa7 100644
--- a/core/lib/Drupal/Core/Database/Driver/pgsql/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Install/Tasks.php
@@ -44,7 +44,7 @@ class Tasks extends InstallTasks {
    */
   protected function checkEncoding() {
     try {
-      if (db_query('SHOW server_encoding')->fetchField() == 'UTF8') {
+      if (db_query('SHOW server_encoding')->fetchField() === 'UTF8') {
         $this->pass(st('Database is encoded in UTF-8'));
       }
       else {
@@ -114,7 +114,7 @@ class Tasks extends InstallTasks {
    */
   protected function checkBinaryOutputSuccess() {
     $bytea_output = db_query("SELECT 'encoding'::bytea AS output")->fetchField();
-    return ($bytea_output == 'encoding');
+    return ($bytea_output === 'encoding');
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php
index 7206e17..0d8da2d 100644
--- a/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php
+++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php
@@ -67,7 +67,7 @@ class Schema extends DatabaseSchema {
         ':default' => '%nextval%',
       ));
       foreach ($result as $column) {
-        if ($column->data_type == 'bytea') {
+        if ($column->data_type === 'bytea') {
           $table_information->blob_fields[$column->column_name] = TRUE;
         }
         elseif (preg_match("/nextval\('([^']+)'/", $column->column_default, $matches)) {
@@ -187,7 +187,7 @@ class Schema extends DatabaseSchema {
   protected function createFieldSql($name, $spec) {
     $sql = $name . ' ' . $spec['pgsql_type'];
 
-    if (isset($spec['type']) && $spec['type'] == 'serial') {
+    if (isset($spec['type']) && $spec['type'] === 'serial') {
       unset($spec['not null']);
     }
 
@@ -258,7 +258,7 @@ class Schema extends DatabaseSchema {
           break;
       }
     }
-    if (isset($field['type']) && $field['type'] == 'serial') {
+    if (isset($field['type']) && $field['type'] === 'serial') {
       unset($field['not null']);
     }
     return $field;
@@ -507,7 +507,7 @@ class Schema extends DatabaseSchema {
     if (!$this->fieldExists($table, $field)) {
       throw new SchemaObjectDoesNotExistException(t("Cannot change the definition of field %table.%name: field doesn't exist.", array('%table' => $table, '%name' => $field)));
     }
-    if (($field != $field_new) && $this->fieldExists($table, $field_new)) {
+    if (($field !== $field_new) && $this->fieldExists($table, $field_new)) {
       throw new SchemaObjectExistsException(t("Cannot rename field %table.%name to %name_new: target field already exists.", array('%table' => $table, '%name' => $field, '%name_new' => $field_new)));
     }
 
@@ -565,7 +565,7 @@ class Schema extends DatabaseSchema {
     }
 
     // Rename the column if necessary.
-    if ($field != $field_new) {
+    if ($field !== $field_new) {
       $this->connection->query('ALTER TABLE {' . $table . '} RENAME "' . $field . '" TO "' . $field_new . '"');
     }
 
diff --git a/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php b/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php
index a9226b2..e47d00e 100644
--- a/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php
+++ b/core/lib/Drupal/Core/Database/Driver/pgsql/Select.php
@@ -63,14 +63,14 @@ class Select extends QuerySelect {
     foreach ($this->fields as $existing_field) {
       if (!empty($table)) {
         // If table alias is given, check if field and table exists.
-        if ($existing_field['table'] == $table && $existing_field['field'] == $table_field) {
+        if ($existing_field['table'] === $table && $existing_field['field'] === $table_field) {
           return $return;
         }
       }
       else {
         // If there is no table, simply check if the field exists as a field or
         // an aliased field.
-        if ($existing_field['alias'] == $field) {
+        if ($existing_field['alias'] === $field) {
           return $return;
         }
       }
@@ -78,7 +78,7 @@ class Select extends QuerySelect {
 
     // Also check expression aliases.
     foreach ($this->expressions as $expression) {
-      if ($expression['alias'] == $field) {
+      if ($expression['alias'] === $field) {
         return $return;
       }
     }
@@ -96,7 +96,7 @@ class Select extends QuerySelect {
     // If $field contains an characters which are not allowed in a field name
     // it is considered an expression, these can't be handeld automatically
     // either.
-    if ($this->connection->escapeField($field) != $field) {
+    if ($this->connection->escapeField($field) !== $field) {
       return $return;
     }
 
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php
index 02a55a4..3b14da3 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php
@@ -133,7 +133,7 @@ class Connection extends DatabaseConnection {
           $count = $this->query('SELECT COUNT(*) FROM ' . $prefix . '.sqlite_master WHERE type = :type AND name NOT LIKE :pattern', array(':type' => 'table', ':pattern' => 'sqlite_%'))->fetchField();
 
           // We can prune the database file if it doesn't have any tables.
-          if ($count == 0) {
+          if ($count === 0) {
             // Detach the database.
             $this->query('DETACH DATABASE :schema', array(':schema' => $prefix));
             // Destroy the database file.
@@ -318,7 +318,7 @@ class Connection extends DatabaseConnection {
     // We need to find the point we're rolling back to, all other savepoints
     // before are no longer needed.
     while ($savepoint = array_pop($this->transactionLayers)) {
-      if ($savepoint == $savepoint_name) {
+      if ($savepoint === $savepoint_name) {
         // Mark whole stack of transactions as needed roll back.
         $this->willRollback = TRUE;
         // If it is the last the transaction in the stack, then it is not a
@@ -364,7 +364,7 @@ class Connection extends DatabaseConnection {
 
     // Commit everything since SAVEPOINT $name.
     while($savepoint = array_pop($this->transactionLayers)) {
-      if ($savepoint != $name) continue;
+      if ($savepoint !== $name) continue;
 
       // If there are no more layers left then we should commit or rollback.
       if (empty($this->transactionLayers)) {
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Insert.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Insert.php
index e584943..c242042 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Insert.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Insert.php
@@ -46,4 +46,4 @@ class Insert extends QueryInsert {
     return $comments . 'INSERT INTO {' . $this->table . '} (' . implode(', ', $this->insertFields) . ') VALUES (' . implode(', ', $placeholders) . ')';
   }
 
-}
\ No newline at end of file
+}
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php
index 823cd13..3f17dcd 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Schema.php
@@ -81,7 +81,7 @@ class Schema extends DatabaseSchema {
 
     // Add the SQL statement for each field.
     foreach ($schema['fields'] as $name => $field) {
-      if (isset($field['type']) && $field['type'] == 'serial') {
+      if (isset($field['type']) && $field['type'] === 'serial') {
         if (isset($schema['primary key']) && ($key = array_search($name, $schema['primary key'])) !== FALSE) {
           unset($schema['primary key'][$key]);
         }
@@ -134,7 +134,7 @@ class Schema extends DatabaseSchema {
       $field['sqlite_type'] = $map[$field['type'] . ':' . $field['size']];
     }
 
-    if (isset($field['type']) && $field['type'] == 'serial') {
+    if (isset($field['type']) && $field['type'] === 'serial') {
       $field['auto_increment'] = TRUE;
     }
 
@@ -396,7 +396,7 @@ class Schema extends DatabaseSchema {
 
     $old_count = $this->connection->query('SELECT COUNT(*) FROM {' . $table . '}')->fetchField();
     $new_count = $this->connection->query('SELECT COUNT(*) FROM {' . $new_table . '}')->fetchField();
-    if ($old_count == $new_count) {
+    if ($old_count === $new_count) {
       $this->dropTable($table);
       $this->renameTable($new_table, $table);
     }
@@ -487,7 +487,7 @@ class Schema extends DatabaseSchema {
     unset($new_schema['fields'][$field]);
     foreach ($new_schema['indexes'] as $index => $fields) {
       foreach ($fields as $key => $field_name) {
-        if ($field_name == $field) {
+        if ($field_name === $field) {
           unset($new_schema['indexes'][$index][$key]);
         }
       }
@@ -504,7 +504,7 @@ class Schema extends DatabaseSchema {
     if (!$this->fieldExists($table, $field)) {
       throw new SchemaObjectDoesNotExistException(t("Cannot change the definition of field %table.%name: field doesn't exist.", array('%table' => $table, '%name' => $field)));
     }
-    if (($field != $field_new) && $this->fieldExists($table, $field_new)) {
+    if (($field !== $field_new) && $this->fieldExists($table, $field_new)) {
       throw new SchemaObjectExistsException(t("Cannot rename field %table.%name to %name_new: target field already exists.", array('%table' => $table, '%name' => $field, '%name_new' => $field_new)));
     }
 
@@ -512,7 +512,7 @@ class Schema extends DatabaseSchema {
     $new_schema = $old_schema;
 
     // Map the old field to the new field.
-    if ($field != $field_new) {
+    if ($field !== $field_new) {
       $mapping[$field_new] = $field;
     }
     else {
@@ -583,7 +583,7 @@ class Schema extends DatabaseSchema {
   public function indexExists($table, $name) {
     $info = $this->getPrefixInfo($table);
 
-    return $this->connection->query('PRAGMA ' . $info['schema'] . '.index_info(' . $info['table'] . '_' . $name . ')')->fetchField() != '';
+    return $this->connection->query('PRAGMA ' . $info['schema'] . '.index_info(' . $info['table'] . '_' . $name . ')')->fetchField() !== '';
   }
 
   public function dropIndex($table, $name) {
@@ -688,4 +688,4 @@ class Schema extends DatabaseSchema {
     ));
     return $result->fetchAllKeyed(0, 0);
   }
-}
\ No newline at end of file
+}
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Select.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Select.php
index 5403611..105af86 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Select.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Select.php
@@ -14,4 +14,4 @@ class Select extends QuerySelect {
     // SQLite does not support FOR UPDATE so nothing to do.
     return $this;
   }
-}
\ No newline at end of file
+}
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Statement.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Statement.php
index 531b6d0..1ecf326 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Statement.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Statement.php
@@ -74,7 +74,7 @@ class Statement extends StatementPrefetch implements Iterator, StatementInterfac
             // PDO allows placeholders to not be prefixed by a colon. See
             // http://marc.info/?l=php-internals&m=111234321827149&w=2 for
             // more.
-            if ($placeholder[0] != ':') {
+            if ($placeholder[0] !== ':') {
               $placeholder = ":$placeholder";
             }
             // When replacing the placeholders, make sure we search for the
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Truncate.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Truncate.php
index bc63540..d06d27e 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Truncate.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Truncate.php
@@ -22,4 +22,4 @@ class Truncate extends QueryTruncate {
 
     return $comments . 'DELETE FROM {' . $this->connection->escapeTable($this->table) . '} ';
   }
-}
\ No newline at end of file
+}
diff --git a/core/lib/Drupal/Core/Database/Driver/sqlite/Update.php b/core/lib/Drupal/Core/Database/Driver/sqlite/Update.php
index 18332e7..c7d3f75 100644
--- a/core/lib/Drupal/Core/Database/Driver/sqlite/Update.php
+++ b/core/lib/Drupal/Core/Database/Driver/sqlite/Update.php
@@ -77,4 +77,4 @@ class Update extends QueryUpdate {
     return parent::execute();
   }
 
-}
\ No newline at end of file
+}
diff --git a/core/lib/Drupal/Core/Database/Install/Tasks.php b/core/lib/Drupal/Core/Database/Install/Tasks.php
index ece3c7c..41506ac 100644
--- a/core/lib/Drupal/Core/Database/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Install/Tasks.php
@@ -240,7 +240,7 @@ abstract class Tasks {
     );
 
     $profile = drupal_get_profile();
-    $db_prefix = ($profile == 'standard') ? 'drupal_' : $profile . '_';
+    $db_prefix = ($profile === 'standard') ? 'drupal_' : $profile . '_';
     $form['advanced_options']['db_prefix'] = array(
       '#type' => 'textfield',
       '#title' => st('Table prefix'),
diff --git a/core/lib/Drupal/Core/Database/Query/Condition.php b/core/lib/Drupal/Core/Database/Query/Condition.php
index f7d2a2f..ff62832 100644
--- a/core/lib/Drupal/Core/Database/Query/Condition.php
+++ b/core/lib/Drupal/Core/Database/Query/Condition.php
@@ -155,7 +155,7 @@ class Condition implements ConditionInterface, Countable {
   public function compile(Connection $connection, PlaceholderInterface $queryPlaceholder) {
     // Re-compile if this condition changed or if we are compiled against a
     // different query placeholder object.
-    if ($this->changed || isset($this->queryPlaceholderIdentifier) && ($this->queryPlaceholderIdentifier != $queryPlaceholder->uniqueIdentifier())) {
+    if ($this->changed || isset($this->queryPlaceholderIdentifier) && ($this->queryPlaceholderIdentifier !== $queryPlaceholder->uniqueIdentifier())) {
       $this->queryPlaceholderIdentifier = $queryPlaceholder->uniqueIdentifier();
 
       $condition_fragments = array();
diff --git a/core/lib/Drupal/Core/Database/Query/Insert.php b/core/lib/Drupal/Core/Database/Query/Insert.php
index e19de45..eb83610 100644
--- a/core/lib/Drupal/Core/Database/Query/Insert.php
+++ b/core/lib/Drupal/Core/Database/Query/Insert.php
@@ -286,7 +286,7 @@ class Insert extends Query {
     }
 
     // Don't execute query without fields.
-    if (count($this->insertFields) + count($this->defaultFields) == 0) {
+    if (count($this->insertFields) + count($this->defaultFields) === 0) {
       throw new NoFieldsException('There are no fields available to insert with.');
     }
 
diff --git a/core/lib/Drupal/Core/FileTransfer/FTPExtension.php b/core/lib/Drupal/Core/FileTransfer/FTPExtension.php
index 39465ba..e1cdef2 100644
--- a/core/lib/Drupal/Core/FileTransfer/FTPExtension.php
+++ b/core/lib/Drupal/Core/FileTransfer/FTPExtension.php
@@ -57,7 +57,7 @@ class FTPExtension extends FTP implements ChmodInterface {
       $list = array();
     }
     foreach ($list as $item){
-      if ($item == '.' || $item == '..') {
+      if ($item === '.' || $item === '..') {
         continue;
       }
       if (@ftp_chdir($this->connection, $item)){
@@ -100,7 +100,7 @@ class FTPExtension extends FTP implements ChmodInterface {
    * Implements Drupal\Core\FileTransfer\FileTransfer::isFile().
    */
   public function isFile($path) {
-    return ftp_size($this->connection, $path) != -1;
+    return ftp_size($this->connection, $path) !== -1;
   }
 
   /**
diff --git a/core/lib/Drupal/Core/FileTransfer/FileTransfer.php b/core/lib/Drupal/Core/FileTransfer/FileTransfer.php
index 78d69d0..4c63d89 100644
--- a/core/lib/Drupal/Core/FileTransfer/FileTransfer.php
+++ b/core/lib/Drupal/Core/FileTransfer/FileTransfer.php
@@ -99,12 +99,12 @@ abstract class FileTransfer {
    *   The variable specified in $name.
    */
   function __get($name) {
-    if ($name == 'connection') {
+    if ($name === 'connection') {
       $this->connect();
       return $this->connection;
     }
 
-    if ($name == 'chroot') {
+    if ($name === 'chroot') {
       $this->setChroot();
       return $this->chroot;
     }
@@ -242,7 +242,7 @@ abstract class FileTransfer {
     $path = preg_replace('|^([a-z]{1}):|i', '', $path); // Strip out windows driveletter if its there.
     if ($strip_chroot) {
       if ($this->chroot && strpos($path, $this->chroot) === 0) {
-        $path = ($path == $this->chroot) ? '' : substr($path, strlen($this->chroot));
+        $path = ($path === $this->chroot) ? '' : substr($path, strlen($this->chroot));
       }
     }
     return $path;
@@ -259,7 +259,7 @@ abstract class FileTransfer {
   */
   function sanitizePath($path) {
     $path = str_replace('\\', '/', $path); // Windows path sanitization.
-    if (substr($path, -1) == '/') {
+    if (substr($path, -1) === '/') {
       $path = substr($path, 0, -1);
     }
     return $path;
diff --git a/core/lib/Drupal/Core/FileTransfer/SSH.php b/core/lib/Drupal/Core/FileTransfer/SSH.php
index c1bf991..df61b87 100644
--- a/core/lib/Drupal/Core/FileTransfer/SSH.php
+++ b/core/lib/Drupal/Core/FileTransfer/SSH.php
@@ -102,7 +102,7 @@ class SSH extends FileTransfer implements ChmodInterface {
     $directory = escapeshellarg($path);
     $cmd = "[ -d {$directory} ] && echo 'yes'";
     if ($output = @ssh2_exec($this->connection, $cmd)) {
-      if ($output == 'yes') {
+      if ($output === 'yes') {
         return TRUE;
       }
       return FALSE;
@@ -118,7 +118,7 @@ class SSH extends FileTransfer implements ChmodInterface {
     $file = escapeshellarg($path);
     $cmd = "[ -f {$file} ] && echo 'yes'";
     if ($output = @ssh2_exec($this->connection, $cmd)) {
-      if ($output == 'yes') {
+      if ($output === 'yes') {
         return TRUE;
       }
       return FALSE;
diff --git a/core/lib/Drupal/Core/Queue/Memory.php b/core/lib/Drupal/Core/Queue/Memory.php
index d741bda..9c06821 100644
--- a/core/lib/Drupal/Core/Queue/Memory.php
+++ b/core/lib/Drupal/Core/Queue/Memory.php
@@ -63,7 +63,7 @@ class Memory implements QueueInterface {
    */
   public function claimItem($lease_time = 30) {
     foreach ($this->queue as $key => $item) {
-      if ($item->expire == 0) {
+      if ($item->expire === 0) {
         $item->expire = time() + $lease_time;
         $this->queue[$key] = $item;
         return $item;
@@ -83,7 +83,7 @@ class Memory implements QueueInterface {
    * Implements Drupal\Core\Queue\QueueInterface::releaseItem().
    */
   public function releaseItem($item) {
-    if (isset($this->queue[$item->item_id]) && $this->queue[$item->item_id]->expire != 0) {
+    if (isset($this->queue[$item->item_id]) && $this->queue[$item->item_id]->expire !== 0) {
       $this->queue[$item->item_id]->expire = 0;
       return TRUE;
     }
diff --git a/core/lib/Drupal/Core/StreamWrapper/LocalStream.php b/core/lib/Drupal/Core/StreamWrapper/LocalStream.php
index 0cd76e0..390e24f 100644
--- a/core/lib/Drupal/Core/StreamWrapper/LocalStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/LocalStream.php
@@ -390,7 +390,7 @@ abstract class LocalStream implements StreamWrapperInterface {
     $target  = $this->getTarget($uri);
     $dirname = dirname($target);
 
-    if ($dirname == '.') {
+    if ($dirname === '.') {
       $dirname = '';
     }
 
diff --git a/core/lib/Drupal/Core/Updater/Updater.php b/core/lib/Drupal/Core/Updater/Updater.php
index 2dca5ba..c362959 100644
--- a/core/lib/Drupal/Core/Updater/Updater.php
+++ b/core/lib/Drupal/Core/Updater/Updater.php
@@ -99,7 +99,7 @@ class Updater {
       return FALSE;
     }
     foreach ($info_files as $info_file) {
-      if (drupal_substr($info_file->filename, 0, -5) == drupal_basename($directory)) {
+      if (drupal_substr($info_file->filename, 0, -5) === drupal_basename($directory)) {
         // Info file Has the same name as the directory, return it.
         return $info_file->uri;
       }
@@ -279,7 +279,7 @@ class Updater {
       if (!is_writable($parent_dir)) {
         @chmod($parent_dir, 0755);
         // It is expected that this will fail if the directory is owned by the
-        // FTP user. If the FTP user == web server, it will succeed.
+        // FTP user. If the FTP user === web server, it will succeed.
         try {
           $filetransfer->createDirectory($directory);
           $this->makeWorldReadable($filetransfer, $directory);
diff --git a/core/lib/Drupal/Core/Utility/SchemaCache.php b/core/lib/Drupal/Core/Utility/SchemaCache.php
index d8c3a50..ffb66c4 100644
--- a/core/lib/Drupal/Core/Utility/SchemaCache.php
+++ b/core/lib/Drupal/Core/Utility/SchemaCache.php
@@ -19,7 +19,7 @@ class SchemaCache extends CacheArray {
    */
   public function __construct() {
     // Cache by request method.
-    parent::__construct('schema:runtime:' . ($_SERVER['REQUEST_METHOD'] == 'GET'), 'cache');
+    parent::__construct('schema:runtime:' . ($_SERVER['REQUEST_METHOD'] === 'GET'), 'cache');
   }
 
   /**
diff --git a/core/misc/ajax.js b/core/misc/ajax.js
index bd17811..4bd1b26 100644
--- a/core/misc/ajax.js
+++ b/core/misc/ajax.js
@@ -24,7 +24,7 @@ Drupal.behaviors.AJAX = {
       if (!$('#' + base + '.ajax-processed').length) {
         var element_settings = settings.ajax[base];
 
-        if (typeof element_settings.selector == 'undefined') {
+        if (typeof element_settings.selector === 'undefined') {
           element_settings.selector = '#' + base;
         }
         $(element_settings.selector).each(function () {
@@ -158,14 +158,14 @@ Drupal.ajax = function (base, element, element_settings) {
     success: function (response, status) {
       // Sanity check for browser support (object expected).
       // When using iFrame uploads, responses must be returned as a string.
-      if (typeof response == 'string') {
+      if (typeof response === 'string') {
         response = $.parseJSON(response);
       }
       return ajax.success(response, status);
     },
     complete: function (response, status) {
       ajax.ajaxing = false;
-      if (status == 'error' || status == 'parsererror') {
+      if (status === 'error' || status === 'parsererror') {
         return ajax.error(response, ajax.url);
       }
     },
@@ -213,7 +213,7 @@ Drupal.ajax.prototype.keypressResponse = function (element, event) {
   // except for form elements of type 'text' and 'textarea', where the
   // spacebar activation causes inappropriate activation if #ajax['keypress'] is
   // TRUE. On a text-type widget a space should always be a space.
-  if (event.which == 13 || (event.which == 32 && element.type != 'text' && element.type != 'textarea')) {
+  if (event.which === 13 || (event.which === 32 && element.type !== 'text' && element.type !== 'textarea')) {
     $(ajax.element_settings.element).trigger(ajax.element_settings.event);
     return false;
   }
@@ -264,7 +264,7 @@ Drupal.ajax.prototype.eventResponse = function (element, event) {
 
   // For radio/checkbox, allow the default event. On IE, this means letting
   // it actually check the box.
-  if (typeof element.type != 'undefined' && (element.type == 'checkbox' || element.type == 'radio')) {
+  if (typeof element.type !== 'undefined' && (element.type === 'checkbox' || element.type === 'radio')) {
     return true;
   }
   else {
@@ -359,7 +359,7 @@ Drupal.ajax.prototype.beforeSend = function (xmlhttprequest, options) {
   $(this.element).addClass('progress-disabled').attr('disabled', true);
 
   // Insert progressbar or throbber.
-  if (this.progress.type == 'bar') {
+  if (this.progress.type === 'bar') {
     var progressBar = new Drupal.progressBar('ajax-progress-' + this.element.id, $.noop, this.progress.method, $.noop);
     if (this.progress.message) {
       progressBar.setProgress(-1, this.progress.message);
@@ -371,7 +371,7 @@ Drupal.ajax.prototype.beforeSend = function (xmlhttprequest, options) {
     this.progress.object = progressBar;
     $(this.element).after(this.progress.element);
   }
-  else if (this.progress.type == 'throbber') {
+  else if (this.progress.type === 'throbber') {
     this.progress.element = $('<div class="ajax-progress ajax-progress-throbber"><div class="throbber">&nbsp;</div></div>');
     if (this.progress.message) {
       this.progress.element.find('.throbber').after('<div class="message">' + this.progress.message + '</div>');
@@ -425,12 +425,12 @@ Drupal.ajax.prototype.getEffect = function (response) {
   var speed = response.speed || this.speed;
 
   var effect = {};
-  if (type == 'none') {
+  if (type === 'none') {
     effect.showEffect = 'show';
     effect.hideEffect = 'hide';
     effect.showSpeed = '';
   }
-  else if (type == 'fade') {
+  else if (type === 'fade') {
     effect.showEffect = 'fadeIn';
     effect.hideEffect = 'fadeOut';
     effect.showSpeed = speed;
@@ -499,7 +499,7 @@ Drupal.ajax.prototype.commands = {
     // content satisfies the requirement of a single top-level element, and
     // only use the container DIV created above when it doesn't. For more
     // information, please see http://drupal.org/node/736066.
-    if (new_content.length != 1 || new_content.get(0).nodeType != 1) {
+    if (new_content.length !== 1 || new_content.get(0).nodeType !== 1) {
       new_content = new_content_wrapped;
     }
 
@@ -518,7 +518,7 @@ Drupal.ajax.prototype.commands = {
     wrapper[method](new_content);
 
     // Immediately hide the new content if we're using any effects.
-    if (effect.showEffect != 'show') {
+    if (effect.showEffect !== 'show') {
       new_content.hide();
     }
 
@@ -529,7 +529,7 @@ Drupal.ajax.prototype.commands = {
       new_content.show();
       new_content.find('.ajax-new-content')[effect.showEffect](effect.showSpeed);
     }
-    else if (effect.showEffect != 'show') {
+    else if (effect.showEffect !== 'show') {
       new_content[effect.showEffect](effect.showSpeed);
     }
 
diff --git a/core/misc/batch.js b/core/misc/batch.js
index 6d28b69..8dc4920 100644
--- a/core/misc/batch.js
+++ b/core/misc/batch.js
@@ -10,7 +10,7 @@ Drupal.behaviors.batch = {
 
       // Success: redirect to the summary.
       var updateCallback = function (progress, status, pb) {
-        if (progress == 100) {
+        if (progress === 100) {
           pb.stopMonitoring();
           window.location = settings.batch.uri + '&op=finished';
         }
diff --git a/core/misc/collapse.js b/core/misc/collapse.js
index 28281a1..5d95fa7 100644
--- a/core/misc/collapse.js
+++ b/core/misc/collapse.js
@@ -59,7 +59,7 @@ Drupal.behaviors.collapse = {
       var $fieldset = $(this);
       // Expand fieldset if there are errors inside, or if it contains an
       // element that is targeted by the uri fragment identifier. 
-      var anchor = location.hash && location.hash != '#' ? ', ' + location.hash : '';
+      var anchor = location.hash && location.hash !== '#' ? ', ' + location.hash : '';
       if ($fieldset.find('.error' + anchor).length) {
         $fieldset.removeClass('collapsed');
       }
diff --git a/core/misc/drupal.js b/core/misc/drupal.js
index c7917b0..ae10d88 100644
--- a/core/misc/drupal.js
+++ b/core/misc/drupal.js
@@ -234,12 +234,12 @@ Drupal.formatPlural = function (count, singular, plural, args, options) {
   var args = args || {};
   args['@count'] = count;
   // Determine the index of the plural form.
-  var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] == 1) ? 0 : 1);
+  var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] === 1) ? 0 : 1);
 
-  if (index == 0) {
+  if (index === 0) {
     return Drupal.t(singular, args, options);
   }
-  else if (index == 1) {
+  else if (index === 1) {
     return Drupal.t(plural, args, options);
   }
   else {
@@ -311,7 +311,7 @@ Drupal.encodePath = function (item, uri) {
  * Get the text selection in a textarea.
  */
 Drupal.getSelection = function (element) {
-  if (typeof element.selectionStart != 'number' && document.selection) {
+  if (typeof element.selectionStart !== 'number' && document.selection) {
     // The current selection.
     var range1 = document.selection.createRange();
     var range2 = range1.duplicate();
@@ -341,7 +341,7 @@ Drupal.ajaxError = function (xmlhttp, uri) {
   statusCode += "\n" + Drupal.t("Debugging information follows.");
   pathText = "\n" + Drupal.t("Path: !uri", {'!uri': uri} );
   statusText = '';
-  // In some cases, when statusCode == 0, xmlhttp.statusText may not be defined.
+  // In some cases, when statusCode === 0, xmlhttp.statusText may not be defined.
   // Unfortunately, testing for it with typeof, etc, doesn't seem to catch that
   // and the test causes an exception. So we need to catch the exception here.
   try {
@@ -360,8 +360,8 @@ Drupal.ajaxError = function (xmlhttp, uri) {
   responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi,"");
   responseText = responseText.replace(/[\n]+\s+/g,"\n");
 
-  // We don't need readyState except for status == 0.
-  readyStateText = xmlhttp.status == 0 ? ("\n" + Drupal.t("ReadyState: !readyState", {'!readyState': xmlhttp.readyState})) : "";
+  // We don't need readyState except for status === 0.
+  readyStateText = xmlhttp.status === 0 ? ("\n" + Drupal.t("ReadyState: !readyState", {'!readyState': xmlhttp.readyState})) : "";
 
   message = statusCode + pathText + statusText + responseText + readyStateText;
   return message;
diff --git a/core/misc/form.js b/core/misc/form.js
index 4dc5b8c..35f3462 100644
--- a/core/misc/form.js
+++ b/core/misc/form.js
@@ -20,7 +20,7 @@ $.fn.drupalSetSummary = function (callback) {
 
   // To facilitate things, the callback should always be a function. If it's
   // not, we wrap it into an anonymous function which just returns the value.
-  if (typeof callback != 'function') {
+  if (typeof callback !== 'function') {
     var val = callback;
     callback = function () { return val; };
   }
diff --git a/core/misc/machine-name.js b/core/misc/machine-name.js
index ffe774f..7a3c079 100644
--- a/core/misc/machine-name.js
+++ b/core/misc/machine-name.js
@@ -49,7 +49,7 @@ Drupal.behaviors.machineName = {
           // Determine the initial machine name value. Unless the machine name form
           // element is disabled or not empty, the initial default value is based on
           // the human-readable form element value.
-          if ($target.is(':disabled') || $target.val() != '') {
+          if ($target.is(':disabled') || $target.val() !== '') {
             var machine = $target.val();
           }
           else {
@@ -82,12 +82,12 @@ Drupal.behaviors.machineName = {
           // Preview the machine name in realtime when the human-readable name
           // changes, but only if there is no machine name yet; i.e., only upon
           // initial creation, not when editing.
-          if ($target.val() == '') {
+          if ($target.val() === '') {
             $source.bind('keyup.machineName change.machineName', function () {
               machine = self.transliterate($(this).val(), options);
               // Set the machine name to the transliterated value.
-              if (machine != '') {
-                if (machine != options.replace) {
+              if (machine !== '') {
+                if (machine !== options.replace) {
                   $target.val(machine);
                   $preview.html(options.field_prefix + Drupal.checkPlain(machine) + options.field_suffix);
                 }
diff --git a/core/misc/progress.js b/core/misc/progress.js
index b0e125c..dcbea36 100644
--- a/core/misc/progress.js
+++ b/core/misc/progress.js
@@ -75,7 +75,7 @@ Drupal.progressBar.prototype.sendPing = function () {
       dataType: 'json',
       success: function (progress) {
         // Display errors.
-        if (progress.status == 0) {
+        if (progress.status === 0) {
           pb.displayError(progress.data);
           return;
         }
diff --git a/core/misc/states.js b/core/misc/states.js
index 30b63ba..a25962c 100644
--- a/core/misc/states.js
+++ b/core/misc/states.js
@@ -199,7 +199,7 @@ states.Dependent.prototype = {
       // This constraint is an array (OR or XOR).
       var hasXor = $.inArray('xor', constraints) === -1;
       for (var i = 0, len = constraints.length; i < len; i++) {
-        if (constraints[i] != 'xor') {
+        if (constraints[i] !== 'xor') {
           var constraint = this.checkConstraints(constraints[i], selector, i);
           // Return if this is OR and we have a satisfied constraint or if this
           // is XOR and we have a second satisfied constraint.
@@ -317,7 +317,7 @@ states.Trigger.prototype = {
   initialize: function () {
     var trigger = states.Trigger.states[this.state];
 
-    if (typeof trigger == 'function') {
+    if (typeof trigger === 'function') {
       // We have a custom trigger initialization function.
       trigger.call(window, this.element);
     }
@@ -366,7 +366,7 @@ states.Trigger.states = {
     'keyup': function () {
       // The function associated to that trigger returns the new value for the
       // state.
-      return this.val() == '';
+      return this.val() === '';
     }
   },
 
@@ -425,7 +425,7 @@ states.State = function(state) {
   // Normalize the state name.
   while (true) {
     // Iteratively remove exclamation marks and invert the value.
-    while (this.name.charAt(0) == '!') {
+    while (this.name.charAt(0) === '!') {
       this.name = this.name.substring(1);
       this.invert = !this.invert;
     }
diff --git a/core/misc/tabledrag.js b/core/misc/tabledrag.js
index 16800e0..1fb58ac 100644
--- a/core/misc/tabledrag.js
+++ b/core/misc/tabledrag.js
@@ -44,7 +44,7 @@ Drupal.tableDrag = function (table, tableSettings) {
   this.oldY = 0; // Used to determine up or down direction from last mouse move.
   this.changed = false; // Whether anything in the entire table has changed.
   this.maxDepth = 0; // Maximum amount of allowed parenting.
-  this.rtl = $(this.table).css('direction') == 'rtl' ? -1 : 1; // Direction of the table.
+  this.rtl = $(this.table).css('direction') === 'rtl' ? -1 : 1; // Direction of the table.
 
   // Configure the scroll settings.
   this.scrollSettings = { amount: 4, interval: 50, trigger: 70 };
@@ -58,7 +58,7 @@ Drupal.tableDrag = function (table, tableSettings) {
   this.indentEnabled = false;
   for (var group in tableSettings) {
     for (var n in tableSettings[group]) {
-      if (tableSettings[group][n].relationship == 'parent') {
+      if (tableSettings[group][n].relationship === 'parent') {
         this.indentEnabled = true;
       }
       if (tableSettings[group][n].limit > 0) {
@@ -88,7 +88,7 @@ Drupal.tableDrag = function (table, tableSettings) {
   $table.before($('<a href="#" class="tabledrag-toggle-weight"></a>')
     .attr('title', Drupal.t('Re-order rows by numerical weight instead of dragging.'))
     .click(function () {
-      if ($.cookie('Drupal.tableDrag.showWeight') == 1) {
+      if ($.cookie('Drupal.tableDrag.showWeight') === 1) {
         self.hideColumns();
       }
       else {
@@ -174,7 +174,7 @@ Drupal.tableDrag.prototype.initColumns = function () {
   }
   // Check cookie value and show/hide weight columns accordingly.
   else {
-    if ($.cookie('Drupal.tableDrag.showWeight') == 1) {
+    if ($.cookie('Drupal.tableDrag.showWeight') === 1) {
       this.showColumns();
     }
     else {
@@ -275,9 +275,9 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
 
   // Add hover action for the handle.
   handle.hover(function () {
-    self.dragObject == null ? $(this).addClass('tabledrag-handle-hover') : null;
+    self.dragObject === null ? $(this).addClass('tabledrag-handle-hover') : null;
   }, function () {
-    self.dragObject == null ? $(this).removeClass('tabledrag-handle-hover') : null;
+    self.dragObject === null ? $(this).removeClass('tabledrag-handle-hover') : null;
   });
 
   // Add the mousedown action for the handle.
@@ -343,7 +343,7 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
   // Add arrow-key support to the handle.
   handle.keydown(function (event) {
     // If a rowObject doesn't yet exist and this isn't the tab key.
-    if (event.keyCode != 9 && !self.rowObject) {
+    if (event.keyCode !== 9 && !self.rowObject) {
       self.rowObject = new self.row(item, 'keyboard', self.indentEnabled, self.maxDepth, true);
     }
 
@@ -381,7 +381,7 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
               window.scrollBy(0, -groupHeight);
             }
           }
-          else if (self.table.tBodies[0].rows[0] != previousRow || $previousRow.is('.draggable')) {
+          else if (self.table.tBodies[0].rows[0] !== previousRow || $previousRow.is('.draggable')) {
             // Swap with the previous row (unless previous row is the first one
             // and undraggable).
             self.rowObject.swap('before', previousRow);
@@ -436,7 +436,7 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) {
         break;
     }
 
-    if (self.rowObject && self.rowObject.changed == true) {
+    if (self.rowObject && self.rowObject.changed === true) {
       $(item).addClass('drag');
       if (self.oldRowElement) {
         $(self.oldRowElement).removeClass('drag-previous');
@@ -477,7 +477,7 @@ Drupal.tableDrag.prototype.dragRow = function (event, self) {
     var x = self.currentMouseCoords.x - self.dragObject.initMouseOffset.x;
 
     // Check for row swapping and vertical scrolling.
-    if (y != self.oldY) {
+    if (y !== self.oldY) {
       self.rowObject.direction = y > self.oldY ? 'down' : 'up';
       self.oldY = y; // Update the old value.
 
@@ -486,14 +486,14 @@ Drupal.tableDrag.prototype.dragRow = function (event, self) {
       // Stop any current scrolling.
       clearInterval(self.scrollInterval);
       // Continue scrolling if the mouse has moved in the scroll direction.
-      if (scrollAmount > 0 && self.rowObject.direction == 'down' || scrollAmount < 0 && self.rowObject.direction == 'up') {
+      if (scrollAmount > 0 && self.rowObject.direction === 'down' || scrollAmount < 0 && self.rowObject.direction === 'up') {
         self.setScroll(scrollAmount);
       }
 
       // If we have a valid target, perform the swap and restripe the table.
       var currentRow = self.findDropTargetRow(x, y);
       if (currentRow) {
-        if (self.rowObject.direction == 'down') {
+        if (self.rowObject.direction === 'down') {
           self.rowObject.swap('after', currentRow, self);
         }
         else {
@@ -526,11 +526,11 @@ Drupal.tableDrag.prototype.dragRow = function (event, self) {
  */
 Drupal.tableDrag.prototype.dropRow = function (event, self) {
   // Drop row functionality shared between mouseup and blur events.
-  if (self.rowObject != null) {
+  if (self.rowObject !== null) {
     var droppedRow = self.rowObject.element;
     var $droppedRow = $(droppedRow);
     // The row is already in the right place so we just release it.
-    if (self.rowObject.changed == true) {
+    if (self.rowObject.changed === true) {
       // Update the fields in the dropped row.
       self.updateFields(droppedRow);
 
@@ -538,7 +538,7 @@ Drupal.tableDrag.prototype.dropRow = function (event, self) {
       // fields in the entire dragged group.
       for (var group in self.tableSettings) {
         var rowSettings = self.rowSettings(group, droppedRow);
-        if (rowSettings.relationship == 'group') {
+        if (rowSettings.relationship === 'group') {
           for (var n in self.rowObject.children) {
             self.updateField(self.rowObject.children[n], group);
           }
@@ -546,7 +546,7 @@ Drupal.tableDrag.prototype.dropRow = function (event, self) {
       }
 
       self.rowObject.markChanged();
-      if (self.changed == false) {
+      if (self.changed === false) {
         $(Drupal.theme('tableDragChangedWarning')).insertBefore(self.table).hide().fadeIn('slow');
         self.changed = true;
       }
@@ -565,7 +565,7 @@ Drupal.tableDrag.prototype.dropRow = function (event, self) {
   }
 
   // Functionality specific only to mouseup event.
-  if (self.dragObject != null) {
+  if (self.dragObject !== null) {
     $droppedRow.find('.tabledrag-handle').removeClass('tabledrag-handle-hover');
 
     self.dragObject = null;
@@ -616,7 +616,7 @@ Drupal.tableDrag.prototype.findDropTargetRow = function (x, y) {
     // Because Safari does not report offsetHeight on table rows, but does on
     // table cells, grab the firstChild of the row and use that instead.
     // http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari.
-    if (row.offsetHeight == 0) {
+    if (row.offsetHeight === 0) {
       var rowHeight = parseInt(row.firstChild.offsetHeight, 10) / 2;
     }
     // Other browsers.
@@ -629,14 +629,14 @@ Drupal.tableDrag.prototype.findDropTargetRow = function (x, y) {
       if (this.indentEnabled) {
         // Check that this row is not a child of the row being dragged.
         for (var n in this.rowObject.group) {
-          if (this.rowObject.group[n] == row) {
+          if (this.rowObject.group[n] === row) {
             return null;
           }
         }
       }
       else {
         // Do not allow a row to be swapped with itself.
-        if (row == this.rowObject.element) {
+        if (row === this.rowObject.element) {
           return null;
         }
       }
@@ -688,11 +688,11 @@ Drupal.tableDrag.prototype.updateField = function (changedRow, group) {
   var $changedRow = $(changedRow);
 
   // Set the row as its own target.
-  if (rowSettings.relationship == 'self' || rowSettings.relationship == 'group') {
+  if (rowSettings.relationship === 'self' || rowSettings.relationship === 'group') {
     var sourceRow = changedRow;
   }
   // Siblings are easy, check previous and next rows.
-  else if (rowSettings.relationship == 'sibling') {
+  else if (rowSettings.relationship === 'sibling') {
     var $previousRow = $changedRow.prev('tr').eq(0);
     var previousRow = $previousRow.get(0);
     var $nextRow = $changedRow.next('tr').eq(0);
@@ -700,7 +700,7 @@ Drupal.tableDrag.prototype.updateField = function (changedRow, group) {
     var sourceRow = changedRow;
     if ($previousRow.is('.draggable') && $previousRow.find('.' + group).length) {
       if (this.indentEnabled) {
-        if ($previousRow.find('.indentations').length == $changedRow.find('.indentations')) {
+        if ($previousRow.find('.indentations').length === $changedRow.find('.indentations')) {
           sourceRow = previousRow;
         }
       }
@@ -710,7 +710,7 @@ Drupal.tableDrag.prototype.updateField = function (changedRow, group) {
     }
     else if ($nextRow.is('.draggable') && $nextRow.find('.' + group).length) {
       if (this.indentEnabled) {
-        if ($nextRow.find('.indentations').length == $changedRow.find('.indentations')) {
+        if ($nextRow.find('.indentations').length === $changedRow.find('.indentations')) {
           sourceRow = nextRow;
         }
       }
@@ -721,7 +721,7 @@ Drupal.tableDrag.prototype.updateField = function (changedRow, group) {
   }
   // Parents, look up the tree until we find a field not in this group.
   // Go up as many parents as indentations in the changed row.
-  else if (rowSettings.relationship == 'parent') {
+  else if (rowSettings.relationship === 'parent') {
     var $previousRow = $changedRow.prev('tr');
     var previousRow = $previousRow;
     while ($previousRow.length && $previousRow.find('.indentation').length >= this.rowObject.indents) {
@@ -739,7 +739,7 @@ Drupal.tableDrag.prototype.updateField = function (changedRow, group) {
       // be at the root level. Find the first item, then compare this row
       // against it as a sibling.
       sourceRow = $(this.table).find('tr.draggable:first').get(0);
-      if (sourceRow == this.rowObject.element) {
+      if (sourceRow === this.rowObject.element) {
         sourceRow = $(this.rowObject.group[this.rowObject.group.length - 1]).next('tr.draggable').get(0);
       }
       var useSibling = true;
@@ -824,7 +824,7 @@ Drupal.tableDrag.prototype.checkScroll = function (cursorY) {
   var de  = document.documentElement;
   var b  = document.body;
 
-  var windowHeight = this.windowHeight = window.innerHeight || (de.clientHeight && de.clientWidth != 0 ? de.clientHeight : b.offsetHeight);
+  var windowHeight = this.windowHeight = window.innerHeight || (de.clientHeight && de.clientWidth !== 0 ? de.clientHeight : b.offsetHeight);
   var scrollY = this.scrollY = (document.all ? (!de.scrollTop ? b.scrollTop : de.scrollTop) : (window.pageYOffset ? window.pageYOffset : window.scrollY));
   var trigger = this.scrollSettings.trigger;
   var delta = 0;
@@ -937,10 +937,10 @@ Drupal.tableDrag.prototype.row.prototype.findChildren = function (addClasses) {
       rows.push(currentRow[0]);
       if (addClasses) {
         currentRow.find('.indentation').each(function (indentNum) {
-          if (child == 1 && (indentNum == parentIndentation)) {
+          if (child === 1 && (indentNum === parentIndentation)) {
             $(this).addClass('tree-child-first');
           }
-          if (indentNum == parentIndentation) {
+          if (indentNum === parentIndentation) {
             $(this).addClass('tree-child');
           }
           else if (indentNum > parentIndentation) {
@@ -970,7 +970,7 @@ Drupal.tableDrag.prototype.row.prototype.isValidSwap = function (row) {
   var $row = $(row);
   if (this.indentEnabled) {
     var prevRow, nextRow;
-    if (this.direction == 'down') {
+    if (this.direction === 'down') {
       prevRow = row;
       nextRow = $row.next('tr').get(0);
     }
@@ -987,7 +987,7 @@ Drupal.tableDrag.prototype.row.prototype.isValidSwap = function (row) {
   }
 
   // Do not let an un-draggable first row have anything put before it.
-  if (this.table.tBodies[0].rows[0] == row && $row.is(':not(.draggable)')) {
+  if (this.table.tBodies[0].rows[0] === row && $row.is(':not(.draggable)')) {
     return false;
   }
 
@@ -1115,7 +1115,7 @@ Drupal.tableDrag.prototype.row.prototype.findSiblings = function (rowSettings) {
           var checkRowIndentation = checkRow.find('.indentation').length;
         }
 
-        if (!(this.indentEnabled) || (checkRowIndentation == rowIndentation)) {
+        if (!(this.indentEnabled) || (checkRowIndentation === rowIndentation)) {
           siblings.push(checkRow[0]);
         }
         else if (checkRowIndentation < rowIndentation) {
@@ -1130,7 +1130,7 @@ Drupal.tableDrag.prototype.row.prototype.findSiblings = function (rowSettings) {
     }
     // Since siblings are added in reverse order for previous, reverse the
     // completed list of previous siblings. Add the current row and continue.
-    if (directions[d] == 'prev') {
+    if (directions[d] === 'prev') {
       siblings.reverse();
       siblings.push(this.element);
     }
@@ -1157,7 +1157,7 @@ Drupal.tableDrag.prototype.row.prototype.removeIndentClasses = function () {
 Drupal.tableDrag.prototype.row.prototype.markChanged = function () {
   var marker = Drupal.theme('tableDragChangedMarker');
   var cell = $(this.element).find('td:first');
-  if (cell.find('abbr.tabledrag-changed').length == 0) {
+  if (cell.find('abbr.tabledrag-changed').length === 0) {
     cell.append(marker);
   }
 };
diff --git a/core/misc/tableselect.js b/core/misc/tableselect.js
index b7011e0..391d429 100644
--- a/core/misc/tableselect.js
+++ b/core/misc/tableselect.js
@@ -9,7 +9,7 @@ Drupal.behaviors.tableSelect = {
 
 Drupal.tableSelect = function () {
   // Do not add a "Select all" checkbox if there are no rows with checkboxes in the table
-  if ($(this).find('td input:checkbox').length == 0) {
+  if ($(this).find('td input:checkbox').length === 0) {
     return;
   }
 
@@ -47,13 +47,13 @@ Drupal.tableSelect = function () {
     // If this is a shift click, we need to highlight everything in the range.
     // Also make sure that we are actually checking checkboxes over a range and
     // that a checkbox has been checked or unchecked before.
-    if (e.shiftKey && lastChecked && lastChecked != e.target) {
+    if (e.shiftKey && lastChecked && lastChecked !== e.target) {
       // We use the checkbox's parent TR to do our range searching.
       Drupal.tableSelectRange($(e.target).closest('tr')[0], $(lastChecked).closest('tr')[0], e.target.checked);
     }
 
     // If all checkboxes are checked, make sure the select-all one is checked too, otherwise keep unchecked.
-    updateSelectAll((checkboxes.length == checkboxes.filter(':checked').length));
+    updateSelectAll((checkboxes.length === checkboxes.filter(':checked').length));
 
     // Keep track of the last checked checkbox.
     lastChecked = e.target;
@@ -67,7 +67,7 @@ Drupal.tableSelectRange = function (from, to, state) {
   // Traverse through the sibling nodes.
   for (var i = from[mode], $i; i; i = i[mode]) {
     // Make sure that we're only dealing with elements.
-    if (i.nodeType != 1) {
+    if (i.nodeType !== 1) {
       continue;
     }
     $i = $(i);
@@ -79,7 +79,7 @@ Drupal.tableSelectRange = function (from, to, state) {
 
     if (to.nodeType) {
       // If we are at the end of the range, stop.
-      if (i == to) {
+      if (i === to) {
         break;
       }
     }
diff --git a/core/misc/timezone.js b/core/misc/timezone.js
index 62b7d4b..03a2e19 100644
--- a/core/misc/timezone.js
+++ b/core/misc/timezone.js
@@ -29,12 +29,12 @@ Drupal.behaviors.setTimezone = {
       var isDaylightSavingTime;
       // If the offset from UTC is identical on January 1 and July 1,
       // assume daylight saving time is not used in this time zone.
-      if (offsetJan == offsetJul) {
+      if (offsetJan === offsetJul) {
         isDaylightSavingTime = '';
       }
       // If the maximum annual offset is equivalent to the current offset,
       // assume daylight saving time is in effect.
-      else if (Math.max(offsetJan, offsetJul) == offsetNow) {
+      else if (Math.max(offsetJan, offsetJul) === offsetNow) {
         isDaylightSavingTime = 1;
       }
       // Otherwise, assume daylight saving time is not in effect.
diff --git a/core/misc/vertical-tabs.js b/core/misc/vertical-tabs.js
index 65e5683..00d0d1c 100644
--- a/core/misc/vertical-tabs.js
+++ b/core/misc/vertical-tabs.js
@@ -20,7 +20,7 @@ Drupal.behaviors.verticalTabs = {
 
       // Check if there are some fieldsets that can be converted to vertical-tabs
       var $fieldsets = $this.find('> fieldset');
-      if ($fieldsets.length == 0) {
+      if ($fieldsets.length === 0) {
         return;
       }
 
@@ -40,7 +40,7 @@ Drupal.behaviors.verticalTabs = {
           .removeClass('collapsible collapsed')
           .addClass('vertical-tabs-pane')
           .data('verticalTab', vertical_tab);
-        if (this.id == focusID) {
+        if (this.id === focusID) {
           tab_focus = $this;
         }
       });
@@ -86,7 +86,7 @@ Drupal.verticalTab = function (settings) {
   // Keyboard events added:
   // Pressing the Enter key will open the tab pane.
   this.link.keydown(function(event) {
-    if (event.keyCode == 13) {
+    if (event.keyCode === 13) {
       self.focus();
       // Set focus on the first input field of the visible fieldset/tab pane.
       $("fieldset.vertical-tabs-pane :input:visible:enabled:first").focus();
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 fec4f0b..57350b4 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)
@@ -589,11 +589,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'));
@@ -622,7 +622,7 @@ function aggregator_refresh($feed) {
   // data. If both are equal we say that feed is not updated.
   $hash = hash('sha256', $feed->source_string);
 
-  if ($success && ($feed->hash != $hash)) {
+  if ($success && ($feed->hash !== $hash)) {
     // Parse the feed.
     if (module_invoke($parser, 'aggregator_parse', $feed)) {
       // Update feed with parsed data.
@@ -640,7 +640,7 @@ function aggregator_refresh($feed) {
         ->execute();
 
       // Log if feed URL has changed.
-      if ($feed->url != $feed_url) {
+      if ($feed->url !== $feed_url) {
         watchdog('aggregator', 'Updated URL for feed %title to %url.', array('%title' => $feed->title, '%url' => $feed->url));
       }
 
@@ -785,7 +785,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..bcfb0ed 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 {
@@ -440,7 +440,7 @@ function theme_aggregator_page_rss($variables) {
     switch ($feed_length) {
       case 'teaser':
         $summary = text_summary($feed->description, NULL, variable_get('aggregator_teaser_length', 600));
-        if ($summary != $feed->description) {
+        if ($summary !== $feed->description) {
           $summary .= '<p><a href="' . check_url($feed->link) . '">' . t('read more') . "</a></p>\n";
         }
         $feed->description = $summary;
diff --git a/core/modules/aggregator/aggregator.parser.inc b/core/modules/aggregator/aggregator.parser.inc
index 0f594d4..85859bb 100644
--- a/core/modules/aggregator/aggregator.parser.inc
+++ b/core/modules/aggregator/aggregator.parser.inc
@@ -185,15 +185,15 @@ function aggregator_element_start($parser, $name, $attributes) {
       break;
     case 'id':
     case 'content':
-      if ($element != 'item') {
+      if ($element !== 'item') {
         $element = $name;
       }
     case 'link':
       // 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 = '';
       }
   }
@@ -305,7 +305,7 @@ function aggregator_parse_w3cdtf($date_str) {
     list($year, $month, $day, $hours, $minutes, $seconds) = array($match[1], $match[2], $match[3], $match[4], $match[5], $match[6]);
     // Calculate the epoch for current date assuming GMT.
     $epoch = gmmktime($hours, $minutes, $seconds, $month, $day, $year);
-    if ($match[10] != 'Z') { // Z is zulu time, aka GMT
+    if ($match[10] !== 'Z') { // Z is zulu time, aka GMT
       list($tz_mod, $tz_hour, $tz_min) = array($match[8], $match[9], $match[10]);
       // Zero out the variables.
       if (!$tz_hour) {
@@ -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..ef27778 100644
--- a/core/modules/aggregator/aggregator.processor.inc
+++ b/core/modules/aggregator/aggregator.processor.inc
@@ -28,7 +28,7 @@ function aggregator_aggregator_process($feed) {
         if (!empty($item['guid'])) {
           $entry = db_query("SELECT iid, timestamp FROM {aggregator_item} WHERE fid = :fid AND guid = :guid", array(':fid' => $feed->fid, ':guid' => $item['guid']))->fetchObject();
         }
-        elseif ($item['link'] && $item['link'] != $feed->link && $item['link'] != $feed->url) {
+        elseif ($item['link'] && $item['link'] !== $feed->link && $item['link'] !== $feed->url) {
           $entry = db_query("SELECT iid, timestamp FROM {aggregator_item} WHERE fid = :fid AND link = :link", array(':fid' => $feed->fid, ':link' => $item['link']))->fetchObject();
         }
         else {
@@ -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');
 }
 
 /**
@@ -186,7 +186,7 @@ function aggregator_save_item($edit) {
 function aggregator_expire($feed) {
   $aggregator_clear = variable_get('aggregator_clear', 9676800);
 
-  if ($aggregator_clear != AGGREGATOR_CLEAR_NEVER) {
+  if ($aggregator_clear !== AGGREGATOR_CLEAR_NEVER) {
     // Remove all items that are older than flush item timer.
     $age = REQUEST_TIME - $aggregator_clear;
     $iids = db_query('SELECT iid FROM {aggregator_item} WHERE fid = :fid AND timestamp < :timestamp', array(
diff --git a/core/modules/aggregator/aggregator.test b/core/modules/aggregator/aggregator.test
index 2149bed..7f706a6 100644
--- a/core/modules/aggregator/aggregator.test
+++ b/core/modules/aggregator/aggregator.test
@@ -10,7 +10,7 @@ class AggregatorTestCase extends DrupalWebTestCase {
     parent::setUp(array('node', 'block', 'aggregator', 'aggregator_test'));
 
     // Create an Article node type.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
 
@@ -114,7 +114,7 @@ class AggregatorTestCase extends DrupalWebTestCase {
       $feed->items[] = $item->iid;
     }
     $feed->item_count = count($feed->items);
-    $this->assertEqual($expected_count, $feed->item_count, t('Total items in feed equal to the total items in database (!val1 != !val2)', array('!val1' => $expected_count, '!val2' => $feed->item_count)));
+    $this->assertEqual($expected_count, $feed->item_count, t('Total items in feed equal to the total items in database (!val1 !== !val2)', array('!val1' => $expected_count, '!val2' => $feed->item_count)));
   }
 
   /**
@@ -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..4d378c1 100644
--- a/core/modules/block/block.admin.inc
+++ b/core/modules/block/block.admin.inc
@@ -140,7 +140,7 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r
     );
     $form['blocks'][$key]['region'] = array(
       '#type' => 'select',
-      '#default_value' => $block['region'] != BLOCK_REGION_NONE ? $block['region'] : NULL,
+      '#default_value' => $block['region'] !== BLOCK_REGION_NONE ? $block['region'] : NULL,
       '#empty_value' => BLOCK_REGION_NONE,
       '#title_display' => 'invisible',
       '#title' => t('Region for @block block', array('@block' => $block['info'])),
@@ -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'),
@@ -185,7 +185,7 @@ function block_admin_display_form_submit($form, &$form_state) {
   $transaction = db_transaction();
   try {
     foreach ($form_state['values']['blocks'] as $block) {
-      $block['status'] = (int) ($block['region'] != BLOCK_REGION_NONE);
+      $block['status'] = (int) ($block['region'] !== BLOCK_REGION_NONE);
       $block['region'] = $block['status'] ? $block['region'] : '';
       db_update('block')
         ->fields(array(
@@ -240,7 +240,7 @@ function _block_compare($a, $b) {
     return $place;
   }
   // Sort by weight, unless disabled.
-  if ($a['region'] != BLOCK_REGION_NONE) {
+  if ($a['region'] !== BLOCK_REGION_NONE) {
     $weight = $a['weight'] - $b['weight'];
     if ($weight) {
       return $weight;
@@ -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,19 +321,19 @@ 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(
         '#type' => 'select',
         '#title' => $theme_title,
-        '#default_value' => !empty($region) && $region != -1 ? $region : NULL,
+        '#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,9 +510,9 @@ 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),
+            'status' => (int) ($region !== BLOCK_REGION_NONE),
           ))
           ->execute();
       }
@@ -609,9 +609,9 @@ 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),
+        'status' => (int) ($region !== BLOCK_REGION_NONE),
       ))
       ->execute();
   }
diff --git a/core/modules/block/block.api.php b/core/modules/block/block.api.php
index a3d59b0..b220113 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';
   }
 }
@@ -342,7 +342,7 @@ function hook_block_list_alter(&$blocks) {
   foreach ($blocks as $key => $block) {
     // Any module using this alter should inspect the data before changing it,
     // to ensure it is what they expect.
-    if (!isset($block->theme) || !isset($block->status) || $block->theme != $theme_key || $block->status != 1) {
+    if (!isset($block->theme) || !isset($block->status) || $block->theme !== $theme_key || $block->status !== 1) {
       // This block was added by a contrib module, leave it in the list.
       continue;
     }
diff --git a/core/modules/block/block.js b/core/modules/block/block.js
index 7dd3c9b..ec0e70b 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..791017f 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,13 +145,13 @@ 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',
     );
-    if ($key != $default_theme) {
+    if ($key !== $default_theme) {
       $items['admin/structure/block/list/' . $key . '/add'] = array(
         'title' => 'Add block',
         'page callback' => 'drupal_get_form',
@@ -273,7 +273,7 @@ function block_page_build(&$page) {
   $all_regions = system_region_list($theme);
 
   $item = menu_get_item();
-  if ($item['path'] != 'admin/structure/block/demo/' . $theme) {
+  if ($item['path'] !== 'admin/structure/block/demo/' . $theme) {
     // Load all region content assigned via blocks.
     foreach (array_keys($all_regions) as $region) {
       // Assign blocks to region.
@@ -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'));
 
@@ -384,7 +384,7 @@ function _block_get_renderable_region($list = array()) {
     // skip the help block, since we assume that most users do not need or want
     // to perform contextual actions on the help block, and the links needlessly
     // draw attention on it.
-    if ($key != 'system_main' && $key != 'system_help') {
+    if ($key !== 'system_main' && $key !== 'system_help') {
       $build[$key]['#contextual_links']['block'] = array('admin/structure/block/manage', array($block->module, $block->delta));
     }
   }
@@ -468,7 +468,7 @@ function _block_rehash($theme = NULL) {
       if (!isset($block['weight'])) {
         $block['weight'] = 0;
       }
-      if (!empty($block['region']) && $block['region'] != BLOCK_REGION_NONE && !isset($regions[$block['region']])) {
+      if (!empty($block['region']) && $block['region'] !== BLOCK_REGION_NONE && !isset($regions[$block['region']])) {
         drupal_set_message(t('The block %info was assigned to the invalid region %region and has been disabled.', array('%info' => $block['info'], '%region' => $block['region'])), 'warning');
         // Disabled modules are moved into the BLOCK_REGION_NONE later so no
         // need to move the bock to another region.
@@ -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),
       );
     }
   }
@@ -786,7 +786,7 @@ function block_block_list_alter(&$blocks) {
   }
 
   foreach ($blocks as $key => $block) {
-    if (!isset($block->theme) || !isset($block->status) || $block->theme != $theme_key || $block->status != 1) {
+    if (!isset($block->theme) || !isset($block->status) || $block->theme !== $theme_key || $block->status !== 1) {
       // This block was added by a contrib module, leave it in the list.
       continue;
     }
@@ -801,12 +801,12 @@ function block_block_list_alter(&$blocks) {
     }
 
     // Use the user's block visibility setting, if necessary.
-    if ($block->custom != BLOCK_CUSTOM_FIXED) {
+    if ($block->custom !== BLOCK_CUSTOM_FIXED) {
       if ($user->uid && isset($user->data['block'][$block->module][$block->delta])) {
         $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;
     }
 
@@ -833,7 +833,7 @@ function block_block_list_alter(&$blocks) {
         $path = drupal_strtolower(drupal_get_path_alias($_GET['q']));
         // Compare the lowercase internal and lowercase path alias (if any).
         $page_match = drupal_match_path($path, $pages);
-        if ($path != $_GET['q']) {
+        if ($path !== $_GET['q']) {
           $page_match = $page_match || drupal_match_path($_GET['q'], $pages);
         }
         // When $block->visibility has a value of 0 (BLOCK_VISIBILITY_NOTLISTED),
@@ -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/block/block.test b/core/modules/block/block.test
index 4af6240..ca6809e 100644
--- a/core/modules/block/block.test
+++ b/core/modules/block/block.test
@@ -695,7 +695,7 @@ class BlockCacheTestCase extends DrupalWebTestCase {
       ->execute();
 
     $current_mode = db_query("SELECT cache FROM {block} WHERE module = 'block_test'")->fetchField();
-    if ($current_mode != $cache_mode) {
+    if ($current_mode !== $cache_mode) {
       $this->fail(t('Unable to set cache mode to %mode. Current mode: %current_mode', array('%mode' => $cache_mode, '%current_mode' => $current_mode)));
     }
   }
diff --git a/core/modules/book/book.admin.inc b/core/modules/book/book.admin.inc
index 265b381..2448c6e 100644
--- a/core/modules/book/book.admin.inc
+++ b/core/modules/book/book.admin.inc
@@ -94,7 +94,7 @@ function book_admin_edit($form, $form_state, $node) {
  * @see book_admin_edit_submit()
  */
 function book_admin_edit_validate($form, &$form_state) {
-  if ($form_state['values']['tree_hash'] != $form_state['values']['tree_current_hash']) {
+  if ($form_state['values']['tree_hash'] !== $form_state['values']['tree_current_hash']) {
     form_set_error('', t('This book has been modified by another user, the changes could not be saved.'));
   }
 }
@@ -120,14 +120,14 @@ function book_admin_edit_submit($form, &$form_state) {
       $values = $form_state['values']['table'][$key];
 
       // Update menu item if moved.
-      if ($row['plid']['#default_value'] != $values['plid'] || $row['weight']['#default_value'] != $values['weight']) {
+      if ($row['plid']['#default_value'] !== $values['plid'] || $row['weight']['#default_value'] !== $values['weight']) {
         $row['#item']['plid'] = $values['plid'];
         $row['#item']['weight'] = $values['weight'];
         menu_link_save($row['#item']);
       }
 
       // Update the title if changed.
-      if ($row['title']['#default_value'] != $values['title']) {
+      if ($row['title']['#default_value'] !== $values['title']) {
         $node = node_load($values['nid']);
         $langcode = LANGUAGE_NOT_SPECIFIED;
         $node->title = $values['title'];
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index a29a331..92e49ab 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),
@@ -229,7 +229,7 @@ function _book_outline_remove_access($node) {
  * is not a top-level page or is a top-level page with no children.
  */
 function _book_node_is_removable($node) {
-  return (!empty($node->book['bid']) && (($node->book['bid'] != $node->nid) || !$node->book['has_children']));
+  return (!empty($node->book['bid']) && (($node->book['bid'] !== $node->nid) || !$node->book['has_children']));
 }
 
 /**
@@ -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);
   }
@@ -652,7 +652,7 @@ function _book_update_outline($node) {
         ':mlid' => $node->book['plid'],
       ))->fetchAssoc();
     }
-    if (empty($node->book['plid']) || !$parent || $parent['bid'] != $node->book['bid']) {
+    if (empty($node->book['plid']) || !$parent || $parent['bid'] !== $node->book['bid']) {
       $node->book['plid'] = db_query("SELECT mlid FROM {book} WHERE nid = :nid", array(
         ':nid' => $node->book['bid'],
       ))->fetchField();
@@ -674,7 +674,7 @@ function _book_update_outline($node) {
       drupal_static_reset('book_get_books');
     }
     else {
-      if ($node->book['bid'] != db_query("SELECT bid FROM {book} WHERE nid = :nid", array(
+      if ($node->book['bid'] !== db_query("SELECT bid FROM {book} WHERE nid = :nid", array(
           ':nid' => $node->nid,
         ))->fetchField()) {
         // Update the bid for this page and all children.
@@ -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);
@@ -781,11 +781,11 @@ function book_prev($book_link) {
   do {
     $prev = $curr;
     list($key, $curr) = each($flat);
-  } while ($key && $key != $book_link['mlid']);
+  } 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);
@@ -818,9 +818,9 @@ function book_next($book_link) {
   do {
     list($key, $curr) = each($flat);
   }
-  while ($key && $key != $book_link['mlid']);
+  while ($key && $key !== $book_link['mlid']);
 
-  if ($key == $book_link['mlid']) {
+  if ($key === $book_link['mlid']) {
     return current($flat);
   }
 }
@@ -844,9 +844,9 @@ function book_children($book_link) {
     do {
       $link = array_shift($flat);
     }
-    while ($link && ($link['mlid'] != $book_link['mlid']));
+    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)),
@@ -899,7 +899,7 @@ function book_node_view($node, $view_mode) {
     }
   }
 
-  if ($view_mode != 'rss') {
+  if ($view_mode !== 'rss') {
     book_node_view_link($node, $view_mode);
   }
 }
@@ -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.
@@ -1339,7 +1339,7 @@ function book_type_is_allowed($type) {
  * of a node type is changed.
  */
 function book_node_type_update($type) {
-  if (!empty($type->old_type) && $type->old_type != $type->type) {
+  if (!empty($type->old_type) && $type->old_type !== $type->type) {
     // Update the list of node types that are allowed to be added to books.
     $allowed_types = variable_get('book_allowed_types', array('book'));
     $key = array_search($type->old_type, $allowed_types);
@@ -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..0bac3c5 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>');
       }
     }
@@ -51,7 +51,7 @@ Drupal.behaviors.color = {
     // Set up colorScheme selector.
     form.find('#edit-scheme').change(function () {
       var schemes = settings.color.schemes, colorScheme = this.options[this.selectedIndex].value;
-      if (colorScheme != '' && schemes[colorScheme]) {
+      if (colorScheme !== '' && schemes[colorScheme]) {
         // Get colors of active scheme.
         colors = schemes[colorScheme];
         for (field_name in colors) {
@@ -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 {
@@ -127,7 +127,7 @@ Drupal.behaviors.color = {
       });
 
       // Change input value.
-      if ($(input).val() && $(input).val() != color) {
+      if ($(input).val() && $(input).val() !== color) {
         $(input).val(color);
 
         // Update locked values.
diff --git a/core/modules/color/color.module b/core/modules/color/color.module
index b22a282..00ae321 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;
     }
@@ -301,7 +301,7 @@ function color_scheme_form_submit($form, &$form_state) {
 
   // Resolve palette.
   $palette = $form_state['values']['palette'];
-  if ($form_state['values']['scheme'] != '') {
+  if ($form_state['values']['scheme'] !== '') {
     foreach ($palette as $key => $color) {
       if (isset($info['schemes'][$form_state['values']['scheme']]['colors'][$key])) {
         $palette[$key] = $info['schemes'][$form_state['values']['scheme']]['colors'][$key];
@@ -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-wrapper.tpl.php b/core/modules/comment/comment-wrapper.tpl.php
index 5e58a67..db16e0f 100644
--- a/core/modules/comment/comment-wrapper.tpl.php
+++ b/core/modules/comment/comment-wrapper.tpl.php
@@ -36,7 +36,7 @@
  */
 ?>
 <section id="comments" class="<?php print $classes; ?>"<?php print $attributes; ?>>
-  <?php if ($content['comments'] && $node->type != 'forum'): ?>
+  <?php if ($content['comments'] && $node->type !== 'forum'): ?>
     <?php print render($title_prefix); ?>
     <h2 class="title"><?php print t('Comments'); ?></h2>
     <?php print render($title_suffix); ?>
diff --git a/core/modules/comment/comment.admin.inc b/core/modules/comment/comment.admin.inc
index c0f92d9..c05f212 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 f270aad..007885f 100644
--- a/core/modules/comment/comment.api.php
+++ b/core/modules/comment/comment.api.php
@@ -96,7 +96,7 @@ function hook_comment_view($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 1a3580f..1f76585 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(
@@ -342,7 +342,7 @@ function comment_node_type_insert($info) {
  * Implements hook_node_type_update().
  */
 function comment_node_type_update($info) {
-  if (!empty($info->old_type) && $info->type != $info->old_type) {
+  if (!empty($info->old_type) && $info->type !== $info->old_type) {
     field_attach_rename_bundle('comment', 'comment_node_' . $info->old_type, 'comment_node_' . $info->type);
   }
 }
@@ -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;
@@ -632,15 +632,15 @@ function theme_comment_block() {
 function comment_node_view($node, $view_mode) {
   $links = array();
 
-  if ($node->comment != COMMENT_NODE_HIDDEN) {
-    if ($view_mode == 'rss') {
+  if ($node->comment !== COMMENT_NODE_HIDDEN) {
+    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";
           }
         }
@@ -687,24 +687,24 @@ function comment_node_view($node, $view_mode) {
         }
       }
     }
-    elseif ($view_mode != 'search_index' && $view_mode != 'search_result') {
+    elseif ($view_mode !== 'search_index' && $view_mode !== 'search_result') {
       // Node in other view modes: add a "post comment" link if the user is
       // 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);
   }
@@ -904,7 +904,7 @@ function comment_prepare_thread(&$comments) {
   $divs = 0;
 
   foreach ($comments as $key => $comment) {
-    if ($first_new && $comment->new != MARK_READ) {
+    if ($first_new && $comment->new !== MARK_READ) {
       // Assign the anchor only for the first new comment. This avoids duplicate
       // id attributes on a page.
       $first_new = FALSE;
@@ -969,7 +969,7 @@ function comment_view($comment, $node, $view_mode = 'full', $langcode = NULL) {
 
   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, $node, $view_mode = 'full', $langcode =
  */
 function comment_links($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, $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'),
@@ -1280,7 +1280,7 @@ function comment_node_load($nodes, $types) {
   // assign values without hitting the database.
   foreach ($nodes as $node) {
     // Store whether comments are enabled for this node.
-    if ($node->comment != COMMENT_NODE_HIDDEN) {
+    if ($node->comment !== COMMENT_NODE_HIDDEN) {
       $comments_enabled[] = $node->nid;
     }
     else {
@@ -1399,11 +1399,11 @@ function comment_update_index() {
  */
 function comment_node_search_result($node) {
   // Do not make a string if comments are hidden.
-  if (user_access('access comments') && $node->comment != COMMENT_NODE_HIDDEN) {
+  if (user_access('access comments') && $node->comment !== COMMENT_NODE_HIDDEN) {
     $comments = db_query('SELECT comment_count FROM {node_comment_statistics} WHERE nid = :nid', array('nid' => $node->nid))->fetchField();
     // Do not make a string if comments are closed and there are currently
     // zero comments.
-    if ($node->comment != COMMENT_NODE_CLOSED || $comments > 0) {
+    if ($node->comment !== COMMENT_NODE_CLOSED || $comments > 0) {
       return array('comment' => format_plural($comments, '1 comment', '@count comments'));
     }
   }
@@ -1459,8 +1459,8 @@ function comment_user_predelete($account) {
 function comment_access($op, $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.
@@ -1696,7 +1696,7 @@ function comment_form($form, &$form_state, $comment) {
   $anonymous_contact = variable_get('comment_anonymous_' . $node->type, COMMENT_ANONYMOUS_MAYNOT_CONTACT);
   $is_admin = (!empty($comment->cid) && user_access('administer comments'));
 
-  if (!$user->uid && $anonymous_contact != COMMENT_ANONYMOUS_MAYNOT_CONTACT) {
+  if (!$user->uid && $anonymous_contact !== COMMENT_ANONYMOUS_MAYNOT_CONTACT) {
     $form['#attached']['library'][] = array('system', 'jquery.cookie');
     $form['#attributes']['class'][] = 'user-info-from-cookie';
   }
@@ -1773,7 +1773,7 @@ function comment_form($form, &$form_state, $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,11 +1784,11 @@ function comment_form($form, &$form_state, $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.'),
-    '#access' => $is_admin || (!$user->uid && $anonymous_contact != COMMENT_ANONYMOUS_MAYNOT_CONTACT),
+    '#access' => $is_admin || (!$user->uid && $anonymous_contact !== COMMENT_ANONYMOUS_MAYNOT_CONTACT),
   );
   $form['author']['homepage'] = array(
     '#type' => 'url',
@@ -1796,7 +1796,7 @@ function comment_form($form, &$form_state, $comment) {
     '#default_value' => $comment->homepage,
     '#maxlength' => 255,
     '#size' => 30,
-    '#access' => $is_admin || (!$user->uid && $anonymous_contact != COMMENT_ANONYMOUS_MAYNOT_CONTACT),
+    '#access' => $is_admin || (!$user->uid && $anonymous_contact !== COMMENT_ANONYMOUS_MAYNOT_CONTACT),
   );
 
   // Add administrative comment publishing options.
@@ -1824,7 +1824,7 @@ function comment_form($form, &$form_state, $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) {
   // 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(
@@ -1857,13 +1857,13 @@ function comment_form($form, &$form_state, $comment) {
   $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save'),
-    '#access' => ($comment->cid && user_access('administer comments')) || variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_REQUIRED || isset($form_state['comment_preview']),
+    '#access' => ($comment->cid && user_access('administer comments')) || variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) !== DRUPAL_REQUIRED || isset($form_state['comment_preview']),
     '#weight' => 19,
   );
   $form['actions']['preview'] = array(
     '#type' => 'submit',
     '#value' => t('Preview'),
-    '#access' => (variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_DISABLED),
+    '#access' => (variable_get('comment_preview_' . $node->type, DRUPAL_OPTIONAL) !== DRUPAL_DISABLED),
     '#weight' => 20,
     '#submit' => array('comment_form_build_preview'),
   );
@@ -2006,7 +2006,7 @@ function comment_submit($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
@@ -2021,7 +2021,7 @@ function comment_submit($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)');
     }
   }
@@ -2057,7 +2057,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'))));
@@ -2070,7 +2070,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.'));
       }
@@ -2103,7 +2103,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';
   }
 }
@@ -2146,12 +2146,12 @@ 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.
   // 'published' class is not needed, it is either 'preview' or 'unpublished'.
-  if ($variables['status'] != 'published') {
+  if ($variables['status'] !== 'published') {
     $variables['classes_array'][] = $variables['status'];
   }
   if ($variables['new']) {
@@ -2161,10 +2161,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';
     }
   }
@@ -2198,7 +2198,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 {
@@ -2507,8 +2507,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 344e757..f083e73 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);
@@ -55,7 +55,7 @@ function comment_reply($node, $pid = NULL) {
         if ($comment) {
           // If that comment exists, make sure that the current comment and the
           // parent comment both belong to the same parent node.
-          if ($comment->nid != $node->nid) {
+          if ($comment->nid !== $node->nid) {
             // Attempting to reply to a comment not belonging to the current nid.
             drupal_set_message(t('The comment you are replying to does not exist.'), 'error');
             drupal_goto("node/$node->nid");
@@ -82,7 +82,7 @@ function comment_reply($node, $pid = NULL) {
     }
 
     // Should we show the reply box?
-    if ($node->comment != COMMENT_NODE_OPEN) {
+    if ($node->comment !== COMMENT_NODE_OPEN) {
       drupal_set_message(t("This discussion is closed: you can't post new comments."), 'error');
       drupal_goto("node/$node->nid");
     }
diff --git a/core/modules/comment/comment.test b/core/modules/comment/comment.test
index 9257513..e43f2a4 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.');
+        if ($case['user'] !== 'anonymous') {
+          $this->assertTrue(count($comments) === 1, 'new class found.');
 
           // Request the node again. The new class should disappear.
           $this->drupalGet('node/' . $node->nid);
@@ -759,7 +759,7 @@ class CommentInterfaceTest extends CommentHelperCase {
     $info = array_merge($current, $info);
 
     // Change environment conditions.
-    if ($current['authenticated'] != $info['authenticated']) {
+    if ($current['authenticated'] !== $info['authenticated']) {
       if ($this->loggedInUser) {
         $this->drupalLogout();
       }
@@ -767,7 +767,7 @@ class CommentInterfaceTest extends CommentHelperCase {
         $this->drupalLogin($this->web_user);
       }
     }
-    if ($current['comment count'] != $info['comment count']) {
+    if ($current['comment count'] !== $info['comment count']) {
       if ($info['comment count']) {
         // Create a comment via CRUD API functionality, since
         // $this->postComment() relies on actual user permissions.
@@ -800,7 +800,7 @@ class CommentInterfaceTest extends CommentHelperCase {
     // Change comment settings.
     variable_set('comment_form_location_' . $this->node->type, $info['form']);
     variable_set('comment_anonymous_' . $this->node->type, $info['contact']);
-    if ($this->node->comment != $info['comments']) {
+    if ($this->node->comment !== $info['comments']) {
       $this->node->comment = $info['comments'];
       node_save($this->node);
     }
@@ -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..4b34a5d 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,12 +131,12 @@ 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;
 
         case 'mail':
-          if ($comment->uid != 0) {
+          if ($comment->uid !== 0) {
             $account = user_load($comment->uid);
             $mail = $account->mail;
           }
@@ -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..c41a17d 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();
@@ -348,12 +348,12 @@ function dashboard_form_block_admin_display_form_alter(&$form, &$form_state, $fo
   // function is called for both the dashboard block configuration form and the
   // standard block configuration form so that both forms can share the same
   // constructor. As a result the form_id must be checked.
-  if ($form_id != 'dashboard_admin_display_form') {
+  if ($form_id !== 'dashboard_admin_display_form') {
     $dashboard_regions = dashboard_region_descriptions();
     $form['block_regions']['#value'] = array_diff_key($form['block_regions']['#value'], $dashboard_regions);
     foreach (element_children($form['blocks']) as $i) {
       $block = &$form['blocks'][$i];
-      if (isset($block['region']['#default_value']) && isset($dashboard_regions[$block['region']['#default_value']]) && $block['region']['#default_value'] != 'dashboard_inactive') {
+      if (isset($block['region']['#default_value']) && isset($dashboard_regions[$block['region']['#default_value']]) && $block['region']['#default_value'] !== 'dashboard_inactive') {
         $block['#access'] = FALSE;
       }
       elseif (isset($block['region']['#options'])) {
@@ -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;
       }
@@ -404,7 +404,7 @@ function dashboard_form_block_admin_configure_alter(&$form, &$form_state) {
   $dashboard_regions = dashboard_region_descriptions();
   foreach (element_children($form['regions']) as $region_name) {
     $region = &$form['regions'][$region_name];
-    if ($region_name != $theme_key && isset($region['#options'])) {
+    if ($region_name !== $theme_key && isset($region['#options'])) {
       $region['#options'] = array_diff_key($region['#options'], $dashboard_regions);
     }
   }
@@ -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;
 }
@@ -505,7 +505,7 @@ function dashboard_show_disabled() {
 
   // Limit the list to blocks that are marked as disabled for the dashboard.
   foreach ($blocks as $key => $block) {
-    if ($block['theme'] != $theme_key || $block['region'] != 'dashboard_inactive') {
+    if ($block['theme'] !== $theme_key || $block['region'] !== 'dashboard_inactive') {
       unset($blocks[$key]);
     }
   }
@@ -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) {
@@ -679,7 +679,7 @@ function theme_dashboard_disabled_block($variables) {
     $output .= '<div id="block-' . $block['module'] . '-' . $block['delta']
     . '" class="disabled-block block block-' . $block['module'] . '-' . $block['delta']
     . ' module-' . $block['module'] . ' delta-' . $block['delta'] . '">'
-    . '<h2>' . (!empty($block['title']) && $block['title'] != '<none>' ? check_plain($block['title']) : check_plain($block['info'])) . '</h2>'
+    . '<h2>' . (!empty($block['title']) && $block['title'] !== '<none>' ? check_plain($block['title']) : check_plain($block['info'])) . '</h2>'
     . '<div class="content"></div>'
     . '</div>';
   }
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..8d98c51 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'));
     }
   }
@@ -198,7 +198,7 @@ class DBLogTestCase extends DrupalWebTestCase {
     $this->assertResponse(200);
     // Retrieve user object.
     $user = user_load_by_name($name);
-    $this->assertTrue($user != NULL, t('User @name was loaded', array('@name' => $name)));
+    $this->assertTrue($user !== NULL, t('User @name was loaded', array('@name' => $name)));
     $user->pass_raw = $pass; // Needed by drupalLogin.
     // Login user.
     $this->drupalLogin($user);
@@ -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);
@@ -281,7 +281,7 @@ class DBLogTestCase extends DrupalWebTestCase {
     $this->assertResponse(200);
     // Retrieve node object.
     $node = $this->drupalGetNodeByTitle($title);
-    $this->assertTrue($node != NULL, t('Node @title was loaded', array('@title' => $title)));
+    $this->assertTrue($node !== NULL, t('Node @title was loaded', array('@title' => $title)));
     // Edit node.
     $edit = $this->getContentUpdate($type);
     $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
@@ -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..79ad34f 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 {
@@ -773,7 +773,7 @@ class EntityFieldQuery {
       if (!isset($storage)) {
         $storage = $field['storage']['module'];
       }
-      elseif ($storage != $field['storage']['module']) {
+      elseif ($storage !== $field['storage']['module']) {
         throw new EntityFieldQueryException(t("Can't handle more than one field storage engine"));
       }
     }
@@ -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_cache_test.module b/core/modules/entity/tests/entity_cache_test.module
index 5ae9ecc..a9dbcd6 100644
--- a/core/modules/entity/tests/entity_cache_test.module
+++ b/core/modules/entity/tests/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/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/field/field.api.php b/core/modules/field/field.api.php
index d9061e1..f1f21c8 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';
   }
@@ -1942,7 +1942,7 @@ function hook_field_storage_query($query) {
       $select_query->fields($table_alias, array('entity_type', 'entity_id', 'revision_id', 'bundle'));
       $field_base_table = $table_alias;
     }
-    if ($field['cardinality'] != 1) {
+    if ($field['cardinality'] !== 1) {
       $select_query->distinct();
     }
   }
@@ -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..8145716 100644
--- a/core/modules/field/field.crud.inc
+++ b/core/modules/field/field.crud.inc
@@ -230,13 +230,13 @@ function field_update_field($field) {
   $field['settings'] += $prior_field['settings'];
 
   // Some updates are always disallowed.
-  if ($field['type'] != $prior_field['type']) {
+  if ($field['type'] !== $prior_field['type']) {
     throw new FieldException("Cannot change an existing field's type.");
   }
-  if ($field['entity_types'] != $prior_field['entity_types']) {
+  if ($field['entity_types'] !== $prior_field['entity_types']) {
     throw new FieldException("Cannot change an existing field's entity_types property.");
   }
-  if ($field['storage']['type'] != $prior_field['storage']['type']) {
+  if ($field['storage']['type'] !== $prior_field['storage']['type']) {
     throw new FieldException("Cannot change an existing field's storage type.");
   }
 
@@ -596,7 +596,7 @@ function _field_write_instance($instance, $update = FALSE) {
       'type' => isset($field_type['default_formatter']) ? $field_type['default_formatter'] : 'hidden',
       'settings' => array(),
     );
-    if ($display['type'] != 'hidden') {
+    if ($display['type'] !== 'hidden') {
       $formatter_type = field_info_formatter_types($display['type']);
       $display['module'] = $formatter_type['module'];
       $display['settings'] += field_info_formatter_settings($display['type']);
@@ -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..171141b 100644
--- a/core/modules/field/field.default.inc
+++ b/core/modules/field/field.default.inc
@@ -78,7 +78,7 @@ function field_default_validate($entity_type, $entity, $field, $instance, $langc
   // Check that the number of values doesn't exceed the field cardinality.
   // For form submitted values, this can only happen with 'multiple value'
   // widgets.
-  if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED && count($items) > $field['cardinality']) {
+  if ($field['cardinality'] !== FIELD_CARDINALITY_UNLIMITED && count($items) > $field['cardinality']) {
     $errors[$field['field_name']][$langcode][0][] = array(
       'error' => 'field_cardinality',
       'message' => t('%name: this field cannot hold more than @count values.', array('%name' => $instance['label'], '@count' => $field['cardinality'])),
@@ -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..14c9498 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) : '';
@@ -364,7 +364,7 @@ function field_default_form_errors($entity_type, $entity, $field, $instance, $la
     // Locate the correct element in the the form.
     $element = drupal_array_get_nested_value($form_state['complete_form'], $field_state['array_parents']);
 
-    $multiple_widget = field_behaviors_widget('multiple values', $instance) != FIELD_BEHAVIOR_DEFAULT;
+    $multiple_widget = field_behaviors_widget('multiple values', $instance) !== FIELD_BEHAVIOR_DEFAULT;
     foreach ($field_state['errors'] as $delta => $delta_errors) {
       // For multiple single-value widgets, pass errors by delta.
       // For a multiple-value widget, all errors are passed to the main widget.
@@ -432,7 +432,7 @@ function field_add_more_js($form, $form_state) {
   $field_state = field_form_get_state($parents, $field_name, $langcode, $form_state);
 
   $field = $field_state['field'];
-  if ($field['cardinality'] != FIELD_CARDINALITY_UNLIMITED) {
+  if ($field['cardinality'] !== FIELD_CARDINALITY_UNLIMITED) {
     return;
   }
 
diff --git a/core/modules/field/field.info.inc b/core/modules/field/field.info.inc
index 78bc62e..43dd9bb 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',
@@ -355,7 +355,7 @@ function _field_info_prepare_instance_display($field, $display) {
     'settings' => array(),
     'weight' => 0,
   );
-  if ($display['type'] != 'hidden') {
+  if ($display['type'] !== 'hidden') {
     $formatter_type = field_info_formatter_types($display['type']);
     // Fallback to default formatter if formatter type is not available.
     if (!$formatter_type) {
@@ -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..39a5041 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
@@ -228,7 +228,7 @@ function field_sql_storage_field_storage_create_field($field) {
  * any data.
  */
 function field_sql_storage_field_update_forbid($field, $prior_field, $has_data) {
-  if ($has_data && $field['columns'] != $prior_field['columns']) {
+  if ($has_data && $field['columns'] !== $prior_field['columns']) {
     throw new FieldUpdateForbiddenException("field_sql_storage cannot change the schema for an existing field with data.");
   }
 }
@@ -279,7 +279,7 @@ function field_sql_storage_field_storage_update_field($field, $prior_field, $has
     $table = _field_sql_storage_tablename($prior_field);
     $revision_table = _field_sql_storage_revision_tablename($prior_field);
     foreach ($prior_field['indexes'] as $name => $columns) {
-      if (!isset($field['indexes'][$name]) || $columns != $field['indexes'][$name]) {
+      if (!isset($field['indexes'][$name]) || $columns !== $field['indexes'][$name]) {
         $real_name = _field_sql_storage_indexname($field['field_name'], $name);
         db_drop_index($table, $real_name);
         db_drop_index($revision_table, $real_name);
@@ -288,7 +288,7 @@ function field_sql_storage_field_storage_update_field($field, $prior_field, $has
     $table = _field_sql_storage_tablename($field);
     $revision_table = _field_sql_storage_revision_tablename($field);
     foreach ($field['indexes'] as $name => $columns) {
-      if (!isset($prior_field['indexes'][$name]) || $columns != $prior_field['indexes'][$name]) {
+      if (!isset($prior_field['indexes'][$name]) || $columns !== $prior_field['indexes'][$name]) {
         $real_name = _field_sql_storage_indexname($field['field_name'], $name);
         $real_columns = array();
         foreach ($columns as $column_name) {
@@ -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';
   }
@@ -520,7 +520,7 @@ function field_sql_storage_field_storage_query(EntityFieldQuery $query) {
       $select_query->fields($table_alias, array('entity_type', 'entity_id', 'revision_id', 'bundle'));
       $field_base_table = $table_alias;
     }
-    if ($field['cardinality'] != 1 || $field['translatable']) {
+    if ($field['cardinality'] !== 1 || $field['translatable']) {
       $select_query->distinct();
     }
   }
@@ -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..3df2994 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'),
@@ -124,7 +124,7 @@ function number_field_instance_settings_form($field, $instance) {
  */
 function number_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
   foreach ($items as $delta => $item) {
-    if ($item['value'] != '') {
+    if ($item['value'] !== '') {
       if (is_numeric($instance['settings']['min']) && $item['value'] < $instance['settings']['min']) {
         $errors[$field['field_name']][$langcode][$delta][] = array(
           'error' => 'number_min',
@@ -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/modules/text/text.test b/core/modules/field/modules/text/text.test
index 0dbaccc..b5d0757 100644
--- a/core/modules/field/modules/text/text.test
+++ b/core/modules/field/modules/text/text.test
@@ -170,7 +170,7 @@ class TextFieldTestCase extends DrupalWebTestCase {
     // Disable all text formats besides the plain text fallback format.
     $this->drupalLogin($this->admin_user);
     foreach (filter_formats() as $format) {
-      if ($format->format != filter_fallback_format()) {
+      if ($format->format !== filter_fallback_format()) {
         $this->drupalPost('admin/config/content/formats/' . $format->format . '/disable', array(), t('Disable'));
       }
     }
diff --git a/core/modules/field/tests/field.test b/core/modules/field/tests/field.test
index 8f94063..f8e5557 100644
--- a/core/modules/field/tests/field.test
+++ b/core/modules/field/tests/field.test
@@ -928,7 +928,7 @@ class FieldAttachOtherTestCase extends FieldAttachTestCase {
     }
 
     foreach ($values as $delta => $value) {
-      if ($value['value'] != 1) {
+      if ($value['value'] !== 1) {
         $this->assertIdentical($errors[$this->field_name][$langcode][$delta][0]['error'], 'field_test_invalid', "Error set on value $delta");
         $this->assertEqual(count($errors[$this->field_name][$langcode][$delta]), 1, "Only one error set on value $delta");
         unset($errors[$this->field_name][$langcode][$delta]);
@@ -1010,7 +1010,7 @@ class FieldAttachOtherTestCase extends FieldAttachTestCase {
     asort($weights);
     $expected_values = array();
     foreach ($weights as $key => $value) {
-      if ($key != 1) {
+      if ($key !== 1) {
         $expected_values[] = array('value' => $values[$key]['value']);
       }
     }
@@ -2734,7 +2734,7 @@ class FieldTranslationsTestCase extends FieldTestCase {
     $enabled_langcodes = field_content_languages();
     $available_langcodes = field_available_languages($this->entity_type, $this->field);
     foreach ($available_langcodes as $delta => $langcode) {
-      if ($langcode != 'xx' && $langcode != 'en') {
+      if ($langcode !== 'xx' && $langcode !== 'en') {
         $this->assertTrue(in_array($langcode, $enabled_langcodes), t('%language is an enabled language.', array('%language' => $langcode)));
       }
     }
@@ -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.
@@ -2962,13 +2962,13 @@ class FieldTranslationsTestCase extends FieldTestCase {
       // As the requested language was not assinged to any field, if the
       // returned language is defined for the current field, core fallback rules
       // were successfully applied.
-      $this->assertTrue(isset($entity->{$field_name}[$langcode]) && $langcode != $requested_langcode, t('The display language for the field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
+      $this->assertTrue(isset($entity->{$field_name}[$langcode]) && $langcode !== $requested_langcode, t('The display language for the field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
     }
 
     // Test single-field display language.
     drupal_static_reset('field_language');
     $langcode = field_language($entity_type, $entity, $this->field_name, $requested_langcode);
-    $this->assertTrue(isset($entity->{$this->field_name}[$langcode]) && $langcode != $requested_langcode, t('The display language for the (single) field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
+    $this->assertTrue(isset($entity->{$this->field_name}[$langcode]) && $langcode !== $requested_langcode, t('The display language for the (single) field %field_name is %language.', array('%field_name' => $field_name, '%language' => $langcode)));
 
     // Test field_language() basic behavior without language fallback.
     variable_set('field_test_language_fallback', FALSE);
@@ -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..30aa536 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..a053e98 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']);
@@ -265,11 +265,11 @@ function field_test_field_storage_query($field_id, $conditions, $count, &$cursor
   $skipped = 0;
 
   foreach ($field_data[$sub_table] as $row) {
-    if ($count != FIELD_QUERY_NO_LIMIT && $entity_count >= $count) {
+    if ($count !== FIELD_QUERY_NO_LIMIT && $entity_count >= $count) {
       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;
         }
       }
@@ -337,7 +337,7 @@ function field_test_field_storage_query($field_id, $conditions, $count, &$cursor
     $rows_count++;
 
     // The query is complete if we walked the whole array.
-    if ($count != FIELD_QUERY_NO_LIMIT && $rows_count >= $rows_total) {
+    if ($count !== FIELD_QUERY_NO_LIMIT && $rows_count >= $rows_total) {
       $cursor = FIELD_QUERY_COMPLETE;
     }
   }
@@ -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..8f129a1 100644
--- a/core/modules/field_ui/field_ui.js
+++ b/core/modules/field_ui/field_ui.js
@@ -52,11 +52,11 @@ Drupal.fieldUIFieldOverview = {
       this.targetTextfield
         .data('field_ui_edited', false)
         .bind('keyup', function (e) {
-          $(this).data('field_ui_edited', $(this).val() != '');
+          $(this).data('field_ui_edited', $(this).val() !== '');
         });
 
       $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>';
     });
 
@@ -152,7 +152,7 @@ Drupal.fieldUIOverview = {
 
     // Handle region change.
     var region = rowHandler.getRegion();
-    if (region != rowHandler.region) {
+    if (region !== rowHandler.region) {
       // Remove parenting.
       $row.find('select.field-parent').val('');
       // Let the row handler deal with the region change.
@@ -177,7 +177,7 @@ Drupal.fieldUIOverview = {
       var regionRow = $row.prevAll('tr.region-message').get(0);
       var region = regionRow.className.replace(/([^ ]+[ ]+)*region-([^ ]+)-message([ ]+[^ ]+)*/, '$2');
 
-      if (region != rowHandler.region) {
+      if (region !== rowHandler.region) {
         // Let the row handler deal with the region change.
         var refreshRows = rowHandler.regionChange(region);
         // Update the row region.
@@ -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,10 +325,10 @@ 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';
+          var value = (this.defaultFormatter !== undefined) ? this.defaultFormatter : 'visible';
         }
         break;
 
@@ -336,7 +336,7 @@ Drupal.fieldUIDisplayOverview.field.prototype = {
         var value = 'hidden';
         break;
     }
-    if (value != undefined) {
+    if (value !== undefined) {
       this.$formatSelect.val(value);
     }
 
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..fb1b76b 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).
@@ -656,7 +656,7 @@ function file_field_widget_process($element, &$form_state, $form) {
 
   // Adjust the Ajax settings so that on upload and remove of any individual
   // file, the entire group of file fields is updated together.
-  if ($field['cardinality'] != 1) {
+  if ($field['cardinality'] !== 1) {
     $parents = array_slice($element['#array_parents'], 0, -1);
     $new_path = 'file/ajax/' . implode('/', $parents) . '/' . $form['form_build_id']['#value'];
     $field_element = drupal_array_get_nested_value($form, $parents);
@@ -695,7 +695,7 @@ function file_field_widget_process_multiple($element, &$form_state, $form) {
   $count = count($element_children);
 
   foreach ($element_children as $delta => $key) {
-    if ($key != $element['#file_upload_delta']) {
+    if ($key !== $element['#file_upload_delta']) {
       $description = _file_field_get_description_from_element($element[$key]);
       $element[$key]['_weight'] = array(
         '#type' => 'weight',
@@ -807,7 +807,7 @@ function theme_file_widget($variables) {
 
   // The "form-managed-file" class is required for proper Ajax functionality.
   $output .= '<div class="file-widget form-managed-file clearfix">';
-  if ($element['fid']['#value'] != 0) {
+  if ($element['fid']['#value'] !== 0) {
     // Add the file size after the file name.
     $element['filename']['#markup'] .= ' <span class="file-size">(' . format_size($element['#file']->filesize) . ')</span> ';
   }
@@ -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..5bf5381 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;
             }
@@ -237,7 +237,7 @@ function file_ajax_upload() {
   $form_parents = func_get_args();
   $form_build_id = (string) array_pop($form_parents);
 
-  if (empty($_POST['form_build_id']) || $form_build_id != $_POST['form_build_id']) {
+  if (empty($_POST['form_build_id']) || $form_build_id !== $_POST['form_build_id']) {
     // Invalid request.
     drupal_set_message(t('An unrecoverable error occurred. The uploaded file likely exceeded the maximum file size (@size) that this server supports.', array('@size' => format_size(file_upload_max_size()))), 'error');
     $commands = array();
@@ -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,
@@ -554,9 +554,9 @@ function file_managed_file_validate(&$element, &$form_state) {
   // references. This prevents unmanaged files from being deleted if this
   // item were to be deleted.
   $clicked_button = end($form_state['triggering_element']['#parents']);
-  if ($clicked_button != 'remove_button' && !empty($element['fid']['#value'])) {
+  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..1450a41 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;
             }
 
@@ -465,7 +465,7 @@ class FileFieldWidgetTestCase extends FileFieldTestCase {
               // data, and since drupalPost() will result in $this being updated
               // with a newly rebuilt form, this doesn't cause problems.
               foreach ($buttons as $button) {
-                if ($button['name'] != $button_name) {
+                if ($button['name'] !== $button_name) {
                   $button['value'] = 'DUMMY';
                 }
               }
@@ -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..dd77cde 100644
--- a/core/modules/filter/filter.module
+++ b/core/modules/filter/filter.module
@@ -142,7 +142,7 @@ function filter_menu() {
  */
 function _filter_disable_format_access($format) {
   // The fallback format can never be disabled.
-  return user_access('administer filters') && ($format->format != filter_fallback_format());
+  return user_access('administer filters') && ($format->format !== filter_fallback_format());
 }
 
 /**
@@ -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 {
@@ -355,7 +355,7 @@ function filter_permission() {
  *   is malformed or is the fallback format (which is available to all users).
  */
 function filter_permission_name($format) {
-  if (isset($format->format) && $format->format != filter_fallback_format()) {
+  if (isset($format->format) && $format->format !== filter_fallback_format()) {
     return 'use text format ' . $format->format;
   }
   return FALSE;
@@ -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.
@@ -923,7 +923,7 @@ function filter_process_format($element) {
     // Hide the text format selector and any other child element (such as text
     // field's summary).
     foreach (element_children($element) as $key) {
-      if ($key != 'value') {
+      if ($key !== 'value') {
         $element[$key]['#access'] = FALSE;
       }
     }
@@ -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
@@ -1009,7 +1009,7 @@ function _filter_tips($format_id, $long = FALSE) {
   $tips = array();
 
   // If only listing one format, extract it from the $formats array.
-  if ($format_id != -1) {
+  if ($format_id !== -1) {
     $formats = array($formats[$format_id]);
   }
 
@@ -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,14 +1615,14 @@ 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;
         continue;
       }
       // Opening or closing tag?
-      $open = ($chunk[1] != '/');
+      $open = ($chunk[1] !== '/');
       list($tag) = preg_split('/[ >]/', substr($chunk, 2 - $open), 2);
       if (!$ignore) {
         if ($open) {
@@ -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..e3abdbc 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();
@@ -615,7 +615,7 @@ class FilterFormatAccessTestCase extends DrupalWebTestCase {
     $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
     $this->assertUrl('node/' . $node->nid);
     foreach (filter_formats() as $format) {
-      if ($format->format != filter_fallback_format()) {
+      if ($format->format !== filter_fallback_format()) {
         filter_format_disable($format);
       }
     }
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..7a51778 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');
@@ -330,7 +330,7 @@ function forum_node_presave($node) {
     if (!empty($node->taxonomy_forums[$langcode])) {
       $node->forum_tid = $node->taxonomy_forums[$langcode][0]['tid'];
       $old_tid = db_query_range("SELECT f.tid FROM {forum} f INNER JOIN {node} n ON f.vid = n.vid WHERE n.nid = :nid ORDER BY f.vid DESC", 0, 1, array(':nid' => $node->nid))->fetchField();
-      if ($old_tid && isset($node->forum_tid) && ($node->forum_tid != $old_tid) && !empty($node->shadow)) {
+      if ($old_tid && isset($node->forum_tid) && ($node->forum_tid !== $old_tid) && !empty($node->shadow)) {
         // A shadow copy needs to be created. Retain new term and add old term.
         $node->taxonomy_forums[$langcode][] = array('tid' => $old_tid);
       }
@@ -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;
   }
@@ -756,7 +756,7 @@ function forum_forum_load($tid = NULL) {
   // Load and validate the parent term.
   if ($tid) {
     $forum_term = taxonomy_term_load($tid);
-    if (!$forum_term || ($forum_term->vid != $vid)) {
+    if (!$forum_term || ($forum_term->vid !== $vid)) {
       return $cache[$tid] = 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'];
     }
   }
@@ -934,7 +934,7 @@ function forum_get_topics($tid, $sortby, $forum_per_page) {
   foreach ($result as $topic) {
     if ($user->uid) {
       // folder is new if topic is new or there are new comments since last visit
-      if ($topic->forum_tid != $tid) {
+      if ($topic->forum_tid !== $tid) {
         $topic->new = 0;
       }
       else {
@@ -951,7 +951,7 @@ function forum_get_topics($tid, $sortby, $forum_per_page) {
 
     // Make sure only one topic is indicated as the first new topic.
     $topic->first_new = FALSE;
-    if ($topic->new != 0 && !$first_new_found) {
+    if ($topic->new !== 0 && !$first_new_found) {
       $topic->first_new = TRUE;
       $first_new_found = TRUE;
     }
@@ -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,13 +1131,13 @@ 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
       // current tid then it means the topic appears in two forums, one of
       // them is a shadow copy.
-      if ($variables['tid'] != $topic->forum_tid) {
+      if ($variables['tid'] !== $topic->forum_tid) {
         $variables['topics'][$id]->moved = TRUE;
         $variables['topics'][$id]->title = check_plain($topic->title);
         $variables['topics'][$id]->message = l(t('This topic has been moved'), "forum/$topic->forum_tid");
@@ -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..a2392b7 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;
   }
@@ -438,7 +438,7 @@ class ForumTestCase extends DrupalWebTestCase {
 
     // Retrieve node object, ensure that the topic was created and in the proper forum.
     $node = $this->drupalGetNodeByTitle($title);
-    $this->assertTrue($node != NULL, t('Node @title was loaded', array('@title' => $title)));
+    $this->assertTrue($node !== NULL, t('Node @title was loaded', array('@title' => $title)));
     $this->assertEqual($node->taxonomy_forums[LANGUAGE_NOT_SPECIFIED][0]['tid'], $tid, 'Saved forum topic was in the expected forum');
 
     // View forum topic.
@@ -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..76bf0b6 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..0ba69b0 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -195,7 +195,7 @@ function image_style_form_submit($form, &$form_state) {
   //   name, so first save the new style, then delete the old, so that the
   //   delete function can receive the name of a fully saved style to update
   //   references to.
-  if (isset($form_state['values']['name']) && $style['name'] != $form_state['values']['name']) {
+  if (isset($form_state['values']['name']) && $style['name'] !== $form_state['values']['name']) {
     $old_style = $style;
     $style['name'] = $form_state['values']['name'];
   }
@@ -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'];
@@ -252,7 +252,7 @@ function image_style_add_form_submit($form, &$form_state) {
 function image_style_name_validate($element, $form_state) {
   // Check for duplicates.
   $styles = image_styles();
-  if (isset($styles[$element['#value']]) && (!isset($form_state['image_style']['name']) || $styles[$element['#value']]['name'] != $form_state['image_style']['name'])) {
+  if (isset($styles[$element['#value']]) && (!isset($form_state['image_style']['name']) || $styles[$element['#value']]['name'] !== $form_state['image_style']['name'])) {
     form_set_error($element['#name'], t('The image style name %name is already in use.', array('%name' => $element['#value'])));
   }
 
@@ -418,7 +418,7 @@ function image_effect_delete_form_submit($form, &$form_state) {
  */
 function image_effect_integer_validate($element, &$form_state) {
   $value = empty($element['#allow_negative']) ? $element['#value'] : preg_replace('/^-/', '', $element['#value']);
-  if ($element['#value'] != '' && (!is_numeric($value) || intval($value) <= 0)) {
+  if ($element['#value'] !== '' && (!is_numeric($value) || intval($value) <= 0)) {
     if (empty($element['#allow_negative'])) {
       form_error($element, t('!name must be an integer.', array('!name' => $element['#title'])));
     }
@@ -432,7 +432,7 @@ function image_effect_integer_validate($element, &$form_state) {
  * Element validate handler to ensure a hexadecimal color value.
  */
 function image_effect_color_validate($element, &$form_state) {
-  if ($element['#value'] != '') {
+  if ($element['#value'] !== '') {
     $hex_value = preg_replace('/^#/', '', $element['#value']);
     if (!preg_match('/^#[0-9A-F]{3}([0-9A-F]{3})?$/', $element['#value'])) {
       form_error($element, t('!name must be a hexadecimal color value.', array('!name' => $element['#title'])));
@@ -644,7 +644,7 @@ function theme_image_style_effects($variables) {
   foreach (element_children($form) as $key) {
     $row = array();
     $form[$key]['weight']['#attributes']['class'] = array('image-effect-order-weight');
-    if ($key != 'new') {
+    if ($key !== 'new') {
       $summary = drupal_render($form[$key]['summary']);
       $row[] = drupal_render($form[$key]['label']) . (empty($summary) ? '' : ' ' . $summary);
       $row[] = drupal_render($form[$key]['weight']);
@@ -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..24f0dd7 100644
--- a/core/modules/image/image.effects.inc
+++ b/core/modules/image/image.effects.inc
@@ -259,13 +259,13 @@ 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];
   }
 
   // Convert #FFFFFF syntax to hexadecimal colors.
-  if ($data['bgcolor'] != '') {
+  if ($data['bgcolor'] !== '') {
     $data['bgcolor'] = hexdec(str_replace('#', '0x', $data['bgcolor']));
   }
   else {
@@ -301,8 +301,8 @@ 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['degrees'] % 180 != 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'];
       $dimensions['height'] = $temp;
diff --git a/core/modules/image/image.field.inc b/core/modules/image/image.field.inc
index aef6be7..d3cdb39 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']));
@@ -442,7 +442,7 @@ function theme_image_widget($variables) {
   }
 
   $output .= '<div class="image-widget-data">';
-  if ($element['fid']['#value'] != 0) {
+  if ($element['fid']['#value'] !== 0) {
     $element['filename']['#markup'] .= ' <span class="file-size">(' . format_size($element['#file']->filesize) . ')</span> ';
   }
   $output .= drupal_render_children($element);
@@ -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..93924d3 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;
   }
 }
@@ -325,22 +325,22 @@ function image_file_predelete($file) {
  * Implements hook_image_style_save().
  */
 function image_image_style_save($style) {
-  if (isset($style['old_name']) && $style['old_name'] != $style['name']) {
+  if (isset($style['old_name']) && $style['old_name'] !== $style['name']) {
     $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;
         }
@@ -363,11 +363,11 @@ function image_image_style_delete($style) {
  * Implements hook_field_delete_field().
  */
 function image_field_delete_field($field) {
-  if ($field['type'] != 'image') {
+  if ($field['type'] !== 'image') {
     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']);
@@ -378,17 +378,17 @@ function image_field_delete_field($field) {
  * Implements hook_field_update_field().
  */
 function image_field_update_field($field, $prior_field, $has_data) {
-  if ($field['type'] != 'image') {
+  if ($field['type'] !== 'image') {
     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']);
 
   $file_new = $fid_new ? file_load($fid_new) : FALSE;
 
-  if ($fid_new != $fid_old) {
+  if ($fid_new !== $fid_old) {
 
     // Is there a new file?
     if ($file_new) {
@@ -404,7 +404,7 @@ function image_field_update_field($field, $prior_field, $has_data) {
   }
 
   // If the upload destination changed, then move the file.
-  if ($file_new && (file_uri_scheme($file_new->uri) != $field['settings']['uri_scheme'])) {
+  if ($file_new && (file_uri_scheme($file_new->uri) !== $field['settings']['uri_scheme'])) {
     $directory = $field['settings']['uri_scheme'] . '://default_images/';
     file_prepare_directory($directory, FILE_CREATE_DIRECTORY);
     file_move($file_new, $directory . $file_new->filename);
@@ -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..0f57f31 100644
--- a/core/modules/image/image.test
+++ b/core/modules/image/image.test
@@ -41,7 +41,7 @@ class ImageFieldTestCase extends DrupalWebTestCase {
     parent::setUp($modules);
 
     // Create Basic page and Article node types.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
@@ -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.'));
     }
   }
@@ -443,7 +443,7 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase {
     $effects_order = array_values($style['effects']);
     $order_correct = TRUE;
     foreach ($effects_order as $index => $effect) {
-      if ($effect_edits_order[$index] != $effect['name']) {
+      if ($effect_edits_order[$index] !== $effect['name']) {
         $order_correct = FALSE;
       }
     }
@@ -488,7 +488,7 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase {
     $effects_order = array_values($style['effects']);
     $order_correct = TRUE;
     foreach ($effects_order as $index => $effect) {
-      if ($effect_edits_order[$index] != $effect['name']) {
+      if ($effect_edits_order[$index] !== $effect['name']) {
         $order_correct = FALSE;
       }
     }
@@ -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..f94a1b1 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(
@@ -70,7 +70,7 @@ function language_admin_overview_form($form, &$form_state) {
       '#type' => 'link',
       '#title' => t('delete'),
       '#href' => 'admin/config/regional/language/delete/' . $langcode,
-      '#access' => $langcode != $default->langcode,
+      '#access' => $langcode !== $default->langcode,
     );
   }
 
@@ -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);
@@ -364,7 +364,7 @@ function language_admin_edit_form_validate($form, &$form_state) {
   if (!isset($form['langcode_view']) && preg_match('@[^a-zA-Z_-]@', $form_state['values']['langcode'])) {
     form_set_error('langcode', t('%field may only contain characters a-z, underscores, or hyphens.', array('%field' => $form['langcode']['#title'])));
   }
-  if ($form_state['values']['name'] != check_plain($form_state['values']['name'])) {
+  if ($form_state['values']['name'] !== check_plain($form_state['values']['name'])) {
     form_set_error('name', t('%field cannot contain any markup.', array('%field' => $form['name']['#title'])));
   }
 }
@@ -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.'));
@@ -778,7 +778,7 @@ function language_negotiation_configure_url_form_validate($form, &$form_state) {
     if (!empty($value)) {
       // Ensure we have exactly one protocol when checking the hostname.
       $host = 'http://' . str_replace(array('http://', 'https://'), '', $value);
-      if (parse_url($host, PHP_URL_HOST) != $value) {
+      if (parse_url($host, PHP_URL_HOST) !== $value) {
         form_error($form['domain'][$langcode], t('The domain for %language may only contain the domain name, not a protocol and/or port.', array('%language' => $name)));
       }
     }
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 34f1a59..92b2a24 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..9ba2acb 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
@@ -332,7 +332,7 @@ function language_switcher_session($type, $path) {
       'attributes' => array('class' => array('language-link')),
       'query'      => $query,
     );
-    if ($language_query != $langcode) {
+    if ($language_query !== $langcode) {
       $links[$langcode]['query'][$param] = $langcode;
     }
     else {
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..e8fed6a 100644
--- a/core/modules/locale/locale.bulk.inc
+++ b/core/modules/locale/locale.bulk.inc
@@ -18,7 +18,7 @@ function locale_translate_import_form($form, &$form_state) {
   // are to translate Drupal to English as well.
   $existing_languages = array();
   foreach ($languages as $langcode => $language) {
-    if ($langcode != 'en' || locale_translate_english()) {
+    if ($langcode !== 'en' || locale_translate_english()) {
       $existing_languages[$langcode] = $language->name;
     }
   }
@@ -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);
@@ -130,7 +130,7 @@ function locale_translate_export_form($form, &$form_state) {
   $languages = language_list(TRUE);
   $language_options = array();
   foreach ($languages as $langcode => $language) {
-    if ($langcode != 'en' || locale_translate_english()) {
+    if ($langcode !== 'en' || locale_translate_english()) {
       $language_options[$langcode] = $language->name;
     }
   }
@@ -200,7 +200,7 @@ function locale_translate_export_form($form, &$form_state) {
  */
 function locale_translate_export_form_submit($form, &$form_state) {
   // If template is required, language code is not given.
-  if ($form_state['values']['langcode'] != LANGUAGE_SYSTEM) {
+  if ($form_state['values']['langcode'] !== LANGUAGE_SYSTEM) {
     $language = language_load($form_state['values']['langcode']);
   }
   else {
diff --git a/core/modules/locale/locale.install b/core/modules/locale/locale.install
index d740c67..e30d6e4 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);
   }
@@ -252,7 +252,7 @@ function locale_update_8003() {
     // Domain names can not contain protocol and/or ports.
     if (!empty($domain)) {
       $host = 'http://' . str_replace(array('http://', 'https://'), '', $domain);
-      if (parse_url($host, PHP_URL_HOST) != $domain) {
+      if (parse_url($host, PHP_URL_HOST) !== $domain) {
         $domains[$langcode] = parse_url($host, PHP_URL_HOST);
       }
       if (array_key_exists($domain, $used_domains)) {
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 6f81480..1a7ade1 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -239,7 +239,7 @@ function locale_language_selector_form($user) {
     $names[$langcode] = $item->name;
   }
   // Get language negotiation settings.
-  $mode = language_negotiation_method_get_first(LANGUAGE_TYPE_INTERFACE) != LANGUAGE_NEGOTIATION_DEFAULT;
+  $mode = language_negotiation_method_get_first(LANGUAGE_TYPE_INTERFACE) !== LANGUAGE_NEGOTIATION_DEFAULT;
   $form['locale'] = array(
     '#type' => 'fieldset',
     '#title' => t('Language settings'),
@@ -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;
@@ -329,7 +329,7 @@ function locale_field_node_form_submit($form, &$form_state) {
 
       // Handle a possible language change: new language values are inserted,
       // previous ones are deleted.
-      if ($field['translatable'] && $previous_langcode != $node->langcode) {
+      if ($field['translatable'] && $previous_langcode !== $node->langcode) {
         $form_state['values'][$field_name][$node->langcode] = $node->{$field_name}[$previous_langcode];
         $form_state['values'][$field_name][$previous_langcode] = array();
       }
@@ -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;
       }
@@ -527,7 +527,7 @@ function locale($string = NULL, $context = NULL, $langcode = NULL) {
       // Cache translation string or TRUE if no translation exists.
       $locale_t[$langcode][$context][$string] = (empty($translation->translation) ? TRUE : $translation->translation);
 
-      if ($translation->version != VERSION) {
+      if ($translation->version !== VERSION) {
         // This is the first use of this string under current Drupal version. Save version
         // and clear cache, to include the string into caching next time. Saved version is
         // also a string-history information for later pruning of the tables.
@@ -607,8 +607,8 @@ 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') {
-      $plural_indexes[$langcode][$count] = (int) ($count != 1);
+    elseif ($langcode === 'en') {
+      $plural_indexes[$langcode][$count] = (int) ($count !== 1);
     }
     // Otherwise, return -1 (unknown).
     else {
@@ -675,12 +675,12 @@ 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)) {
         // Don't parse our own translations files.
-        if (substr($filepath, 0, strlen($dir)) != $dir) {
+        if (substr($filepath, 0, strlen($dir)) !== $dir) {
           _locale_parse_js_file($filepath);
           $parsed[] = $filepath;
           $new_files = TRUE;
@@ -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),
         ),
       ),
@@ -770,7 +770,7 @@ function locale_form_language_admin_overview_form_alter(&$form, &$form_state) {
       'translated' => 0,
       'ratio' => 0,
     );
-    if ($langcode != 'en' || locale_translate_english()) {
+    if ($langcode !== 'en' || locale_translate_english()) {
       $form['languages'][$langcode]['locale_statistics'] = array(
         '#type' => 'link',
         '#title' => t('@translated/@total (@ratio%)', array(
@@ -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',
@@ -864,16 +864,16 @@ function locale_form_system_file_system_settings_alter(&$form, $form_state) {
  * Implements MODULE_preprocess_HOOK().
  */
 function locale_preprocess_node(&$variables) {
-  if ($variables['langcode'] != LANGUAGE_NOT_SPECIFIED) {
+  if ($variables['langcode'] !== LANGUAGE_NOT_SPECIFIED) {
     global $language_interface;
 
     $node_language = language_load($variables['langcode']);
-    if ($node_language->langcode != $language_interface->langcode) {
+    if ($node_language->langcode !== $language_interface->langcode) {
       // If the node language was different from the page language, we should
       // add markup to identify the language. Otherwise the page language is
       // inherited.
       $variables['attributes_array']['lang'] = $variables['langcode'];
-      if ($node_language->direction != $language_interface->direction) {
+      if ($node_language->direction !== $language_interface->direction) {
         // If text direction is different form the page's text direction, add
         // direction information as well.
         $dir = array('ltr', 'rtl');
@@ -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')));
 }
 
 /**
@@ -1104,7 +1104,7 @@ function _locale_rebuild_js($langcode = NULL) {
 
   // Delete old file, if we have no translations anymore, or a different file to be saved.
   $locale_javascripts = variable_get('locale_translation_javascript', array());
-  $changed_hash = !isset($locale_javascripts[$language->langcode]) || ($locale_javascripts[$language->langcode] != $data_hash);
+  $changed_hash = !isset($locale_javascripts[$language->langcode]) || ($locale_javascripts[$language->langcode] !== $data_hash);
   if (!empty($locale_javascripts[$language->langcode]) && (!$data || $changed_hash)) {
     file_unmanaged_delete($dir . '/' . $language->langcode . '_' . $locale_javascripts[$language->langcode] . '.js');
     $locale_javascripts[$language->langcode] = '';
@@ -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..5794a1a 100644
--- a/core/modules/locale/locale.pages.inc
+++ b/core/modules/locale/locale.pages.inc
@@ -44,7 +44,7 @@ function _locale_translate_seek() {
     case 'translated':
       $sql_query->condition('t.translation', '%' . db_like($query['string']) . '%', 'LIKE');
       $sql_query->orderBy('t.translation', 'DESC');
-      if ($query['customized'] != 'all') {
+      if ($query['customized'] !== 'all') {
         $sql_query->condition('t.customized', $query['customized']);
       }
       break;
@@ -59,7 +59,7 @@ function _locale_translate_seek() {
     default:
       $condition = db_or()
         ->condition('s.source', '%' . db_like($query['string']) . '%', 'LIKE');
-      if ($query['language'] != LANGUAGE_SYSTEM) {
+      if ($query['language'] !== LANGUAGE_SYSTEM) {
         // Only search in translations if the language is not forced to system language.
         $condition->condition('t.translation', '%' . db_like($query['string']) . '%', 'LIKE');
       }
@@ -68,7 +68,7 @@ function _locale_translate_seek() {
   }
 
   $limit_language = NULL;
-  if ($query['language'] != LANGUAGE_SYSTEM && $query['language'] != 'all') {
+  if ($query['language'] !== LANGUAGE_SYSTEM && $query['language'] !== 'all') {
     $sql_query->condition('language', $query['language']);
     $limit_language = $query['language'];
   }
@@ -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> ";
     }
   }
@@ -159,7 +159,7 @@ function locale_translation_filters() {
   $languages = language_list(TRUE);
   $language_options = array();
   foreach ($languages as $langcode => $language) {
-    if ($langcode != 'en' || locale_translate_english()) {
+    if ($langcode !== 'en' || locale_translate_english()) {
       $language_options[$langcode] = $language->name;
     }
   }
@@ -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' => '',
           );
@@ -460,7 +460,7 @@ function locale_translate_edit_form_submit($form, &$form_state) {
     }
     if ($has_translation) {
       // Only update or insert if we have a value to use.
-      if (!empty($translation) && $translation != $value) {
+      if (!empty($translation) && $translation !== $value) {
         db_update('locales_target')
           ->fields(array(
             'translation' => $value,
diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test
index bb3c6e7..2452564 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)));
     }
 
@@ -3254,7 +3254,7 @@ class LocaleLanguageNegotiationInfoFunctionalTest extends DrupalWebTestCase {
     $modules = array('locale_test');
 
     // Enable/disable locale_test only if we did not already before.
-    if ($last_op != $op) {
+    if ($last_op !== $op) {
       $function = "module_{$op}";
       $function($modules);
       // Reset hook implementation cache.
@@ -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..6aa8579 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;
@@ -167,13 +167,13 @@ function menu_overview_form_submit($form, &$form_state) {
       $element = $form[$mlid];
       // Update any fields that have changed in this menu item.
       foreach ($fields as $field) {
-        if ($element[$field]['#value'] != $element[$field]['#default_value']) {
+        if ($element[$field]['#value'] !== $element[$field]['#default_value']) {
           $element['#item'][$field] = $element[$field]['#value'];
           $updated_items[$mlid] = $element['#item'];
         }
       }
       // Hidden is a special case, the value needs to be reversed.
-      if ($element['hidden']['#value'] != $element['hidden']['#default_value']) {
+      if ($element['hidden']['#value'] !== $element['hidden']['#default_value']) {
         // Convert to integer rather than boolean due to PDO cast to string.
         $element['#item']['hidden'] = $element['hidden']['#value'] ? 0 : 1;
         $updated_items[$mlid] = $element['#item'];
@@ -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'),
@@ -368,7 +368,7 @@ function menu_edit_item($form, &$form_state, $type, $item, $menu) {
 function menu_edit_item_validate($form, &$form_state) {
   $item = &$form_state['values'];
   $normal_path = drupal_get_normal_path($item['link_path']);
-  if ($item['link_path'] != $normal_path) {
+  if ($item['link_path'] !== $normal_path) {
     drupal_set_message(t('The menu system stores system paths only, but will use the URL alias for display. %link_path has been stored as %normal_path', array('%link_path' => $item['link_path'], '%normal_path' => $normal_path)));
     $item['link_path'] = $normal_path;
   }
@@ -388,7 +388,7 @@ function menu_edit_item_validate($form, &$form_state) {
     else {
       unset($item['options']['fragment']);
     }
-    if (isset($parsed_link['path']) && $item['link_path'] != $parsed_link['path']) {
+    if (isset($parsed_link['path']) && $item['link_path'] !== $parsed_link['path']) {
       $item['link_path'] = $parsed_link['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..f55ebec 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.
@@ -429,7 +429,7 @@ function _menu_parents_recurse($tree, $menu_name, $indent, &$options, $exclude,
       // Don't iterate through any links on this level.
       break;
     }
-    if ($data['link']['mlid'] != $exclude && $data['link']['hidden'] >= 0) {
+    if ($data['link']['mlid'] !== $exclude && $data['link']['hidden'] >= 0) {
       $title = $indent . ' ' . truncate_utf8($data['link']['title'], 30, TRUE, FALSE);
       if ($data['link']['hidden']) {
         $title .= ' (' . t('disabled') . ')';
@@ -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..10fa119 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');
 }
 
 /**
@@ -283,7 +283,7 @@ function node_type_form_validate($form, &$form_state) {
 
   $names = array_flip($types);
 
-  if (isset($names[$type->name]) && $names[$type->name] != $old_type) {
+  if (isset($names[$type->name]) && $names[$type->name] !== $old_type) {
     form_set_error('name', t('The human-readable name %name is already taken.', array('%name' => $type->name)));
   }
 }
@@ -308,7 +308,7 @@ function node_type_form_submit($form, &$form_state) {
   $type->title_label = $form_state['values']['title_label'];
   // title_label is required in core; has_title will always be true, unless a
   // module alters the title field.
-  $type->has_title = ($type->title_label != '');
+  $type->has_title = ($type->title_label !== '');
 
   $type->base = !empty($form_state['values']['base']) ? $form_state['values']['base'] : 'node_content';
   $type->custom = $form_state['values']['custom'];
@@ -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;
   }
@@ -345,7 +345,7 @@ function node_type_form_submit($form, &$form_state) {
     }
     variable_set($variable_new, $value);
 
-    if ($variable_new != $variable_old) {
+    if ($variable_new !== $variable_old) {
       variable_del($variable_old);
     }
   }
@@ -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'));
@@ -375,7 +375,7 @@ function node_type_form_submit($form, &$form_state) {
  * Implements hook_node_type_insert().
  */
 function node_node_type_insert($info) {
-  if (!empty($info->old_type) && $info->old_type != $info->type) {
+  if (!empty($info->old_type) && $info->old_type !== $info->type) {
     $update_count = node_type_update_nodes($info->old_type, $info->type);
 
     if ($update_count) {
@@ -388,7 +388,7 @@ function node_node_type_insert($info) {
  * Implements hook_node_type_update().
  */
 function node_node_type_update($info) {
-  if (!empty($info->old_type) && $info->old_type != $info->type) {
+  if (!empty($info->old_type) && $info->old_type !== $info->type) {
     $update_count = node_type_update_nodes($info->old_type, $info->type);
 
     if ($update_count) {
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index ac18da7..66c7870 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 {
@@ -245,7 +245,7 @@ function node_filter_form_submit($form, &$form_state) {
     case t('Refine'):
       // Apply every filter that has a choice selected other than 'any'.
       foreach ($filters as $filter => $options) {
-        if (isset($form_state['values'][$filter]) && $form_state['values'][$filter] != '[any]') {
+        if (isset($form_state['values'][$filter]) && $form_state['values'][$filter] !== '[any]') {
           $_SESSION['node_overview_filter'][] = array($filter, $form_state['values'][$filter]);
         }
       }
@@ -349,7 +349,7 @@ function _node_mass_update_batch_process($nodes, $updates, &$context) {
 
   // Inform the batch engine that we are not finished,
   // and provide an estimation of the completion level we reached.
-  if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
+  if ($context['sandbox']['progress'] !== $context['sandbox']['max']) {
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
   }
 }
@@ -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();
@@ -478,7 +478,7 @@ function node_admin_nodes() {
   $destination = drupal_get_destination();
   $options = array();
   foreach ($nodes as $node) {
-    $l_options = $node->langcode != LANGUAGE_NOT_SPECIFIED && isset($languages[$node->langcode]) ? array('language' => $languages[$node->langcode]) : array();
+    $l_options = $node->langcode !== LANGUAGE_NOT_SPECIFIED && isset($languages[$node->langcode]) ? array('language' => $languages[$node->langcode]) : array();
     $options[$node->nid] = array(
       'title' => array(
         'data' => array(
diff --git a/core/modules/node/node.api.php b/core/modules/node/node.api.php
index 2324b47..8d78d78 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
@@ -380,7 +380,7 @@ function hook_node_grants_alter(&$grants, $account, $op) {
   // Get our list of banned roles.
   $restricted = variable_get('example_restricted_roles', array());
 
-  if ($op != 'view' && !empty($restricted)) {
+  if ($op !== 'view' && !empty($restricted)) {
     // Now check the roles for this account against the restrictions.
     foreach ($restricted as $role_id) {
       if (isset($account->roles[$role_id])) {
@@ -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;
   }
@@ -997,7 +997,7 @@ function hook_node_type_insert($info) {
  *   The node type object that is being updated.
  */
 function hook_node_type_update($info) {
-  if (!empty($info->old_type) && $info->old_type != $info->type) {
+  if (!empty($info->old_type) && $info->old_type !== $info->type) {
     $setting = variable_get('comment_' . $info->old_type, COMMENT_NODE_OPEN);
     variable_del('comment_' . $info->old_type);
     variable_set('comment_' . $info->type, $setting);
@@ -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 b5ed7e8..99f2575 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -82,9 +82,9 @@ function node_help($path, $arg) {
   // Remind site administrators about the {node_access} table being flagged
   // for rebuild. We don't need to issue the message on the confirm form, or
   // while the rebuild is being processed.
-  if ($path != 'admin/reports/status/rebuild' && $path != 'batch' && strpos($path, '#') === FALSE
+  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) {
@@ -531,7 +531,7 @@ function node_type_save($info) {
       ->condition('type', $existing_type)
       ->execute();
 
-    if (!empty($type->old_type) && $type->old_type != $type->type) {
+    if (!empty($type->old_type) && $type->old_type !== $type->type) {
       field_attach_rename_bundle('node', $type->old_type, $type->type);
     }
     module_invoke_all('node_type_update', $type);
@@ -734,7 +734,7 @@ function _node_types_build($rebuild = FALSE) {
     // Types defined by the node module in the database (rather than by a separate
     // module using hook_node_info) have a base value of 'node_content'. The isset()
     // check prevents errors on old (pre-Drupal 7) databases.
-    if (isset($type_object->base) && $type_object->base != 'node_content' && empty($_node_types->types[$type_db])) {
+    if (isset($type_object->base) && $type_object->base !== 'node_content' && empty($_node_types->types[$type_db])) {
       $type_object->disabled = TRUE;
     }
     if (isset($_node_types->types[$type_db])) {
@@ -744,13 +744,13 @@ function _node_types_build($rebuild = FALSE) {
       $_node_types->types[$type_db] = $type_object;
       $_node_types->names[$type_db] = $type_object->name;
 
-      if ($type_db != $type_object->orig_type) {
+      if ($type_db !== $type_object->orig_type) {
         unset($_node_types->types[$type_object->orig_type]);
         unset($_node_types->names[$type_object->orig_type]);
       }
     }
     $_node_types->types[$type_db]->disabled = $type_object->disabled;
-    $_node_types->types[$type_db]->disabled_changed = $disabled != $type_object->disabled;
+    $_node_types->types[$type_db]->disabled_changed = $disabled !== $type_object->disabled;
   }
 
   if ($rebuild) {
@@ -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,11 +2528,11 @@ 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) {
-    if (!isset($block->theme) || !isset($block->status) || $block->theme != $theme_key || $block->status != 1) {
+    if (!isset($block->theme) || !isset($block->status) || $block->theme !== $theme_key || $block->status !== 1) {
       // This block was added by a contrib module, leave it in the list.
       continue;
     }
@@ -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);
@@ -2627,7 +2627,7 @@ function node_feed($nids = FALSE, $channel = array()) {
       $namespaces = array_merge($namespaces, $node->rss_namespaces);
     }
 
-    if ($item_length != 'title') {
+    if ($item_length !== 'title') {
       // We render node contents and force links to be last.
       $build['links']['#weight'] = 1000;
       $item_text .= drupal_render($build);
@@ -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',
@@ -2900,17 +2900,17 @@ function node_search_validate($form, &$form_state) {
       $keys = search_expression_insert($keys, 'language', implode(',', $languages));
     }
   }
-  if ($form_state['values']['or'] != '') {
+  if ($form_state['values']['or'] !== '') {
     if (preg_match_all('/ ("[^"]+"|[^" ]+)/i', ' ' . $form_state['values']['or'], $matches)) {
       $keys .= ' ' . implode(' OR ', $matches[1]);
     }
   }
-  if ($form_state['values']['negative'] != '') {
+  if ($form_state['values']['negative'] !== '') {
     if (preg_match_all('/ ("[^"]+"|[^" ]+)/i', ' ' . $form_state['values']['negative'], $matches)) {
       $keys .= ' -' . implode(' -', $matches[1]);
     }
   }
-  if ($form_state['values']['phrase'] != '') {
+  if ($form_state['values']['phrase'] !== '') {
     $keys .= ' "' . str_replace('"', ' ', $form_state['values']['phrase']) . '"';
   }
   if (!empty($keys)) {
@@ -3056,14 +3056,14 @@ 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;
   }
 
   // If the module did not override the access rights, use those set in the
   // node_access table.
-  if ($op != 'create' && $node->nid) {
+  if ($op !== 'create' && $node->nid) {
     if (module_implements('node_grants')) {
       $query = db_select('node_access');
       $query->addExpression('1');
@@ -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');
@@ -3542,7 +3542,7 @@ function _node_access_write_grants($node, $grants, $realm = NULL, $delete = TRUE
   if (!empty($grants) && count(module_implements('node_grants'))) {
     $query = db_insert('node_access')->fields(array('nid', 'realm', 'gid', 'grant_view', 'grant_update', 'grant_delete'));
     foreach ($grants as $grant) {
-      if ($realm && $realm != $grant['realm']) {
+      if ($realm && $realm !== $grant['realm']) {
         continue;
       }
       // Only write grants; denies are implicit.
@@ -3685,7 +3685,7 @@ function _node_access_rebuild_batch_operation(&$context) {
   }
 
   // Multistep processing : report progress.
-  if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
+  if ($context['sandbox']['progress'] !== $context['sandbox']['max']) {
     $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
   }
 }
@@ -4086,7 +4086,7 @@ function node_requirements($phase) {
   // in the {node_access} table, or if there are modules that
   // implement hook_node_grants().
   $grant_count = db_query('SELECT COUNT(*) FROM {node_access}')->fetchField();
-  if ($grant_count != 1 || count(module_implements('node_grants')) > 0) {
+  if ($grant_count !== 1 || count(module_implements('node_grants')) > 0) {
     $value = format_plural($grant_count, 'One permission in use', '@count permissions in use', array('@count' => $grant_count));
   } else {
     $value = $t('Disabled');
@@ -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..8b9e21d 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']);
   }
@@ -320,13 +320,13 @@ function node_form($form, &$form_state, $node) {
   $form['actions'] = array('#type' => 'actions');
   $form['actions']['submit'] = array(
     '#type' => 'submit',
-    '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_REQUIRED || (!form_get_errors() && isset($form_state['node_preview'])),
+    '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) !== DRUPAL_REQUIRED || (!form_get_errors() && isset($form_state['node_preview'])),
     '#value' => t('Save'),
     '#weight' => 5,
     '#submit' => array('node_form_submit'),
   );
   $form['actions']['preview'] = array(
-    '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) != DRUPAL_DISABLED,
+    '#access' => variable_get('node_preview_' . $node->type, DRUPAL_OPTIONAL) !== DRUPAL_DISABLED,
     '#type' => 'submit',
     '#value' => t('Preview'),
     '#weight' => 10,
@@ -459,7 +459,7 @@ function theme_node_preview($variables) {
   $full = drupal_render($elements);
 
   // Do we need to preview trimmed version of post as well as full version?
-  if ($trimmed != $full) {
+  if ($trimmed !== $full) {
     drupal_set_message(t('The trimmed version of your post shows what your post looks like when promoted to the main page or when exported for syndication.<span class="no-js"> You can insert the delimiter "&lt;!--break--&gt;" (without the quotes) to fine-tune where your post gets split.</span>'));
     $output .= '<h3>' . t('Preview trimmed version') . '</h3>';
     $output .= $trimmed;
@@ -608,13 +608,13 @@ function node_revision_overview($node) {
 
     if ($revision->current_vid > 0) {
       $row[] = array('data' => t('!date by !username', array('!date' => l(format_date($revision->timestamp, 'short'), "node/$node->nid"), '!username' => theme('username', array('account' => $revision))))
-                               . (($revision->log != '') ? '<p class="revision-log">' . filter_xss($revision->log) . '</p>' : ''),
+                               . (($revision->log !== '') ? '<p class="revision-log">' . filter_xss($revision->log) . '</p>' : ''),
                      'class' => array('revision-current'));
       $operations[] = array('data' => drupal_placeholder(t('current revision')), 'class' => array('revision-current'), 'colspan' => 2);
     }
     else {
       $row[] = t('!date by !username', array('!date' => l(format_date($revision->timestamp, 'short'), "node/$node->nid/revisions/$revision->vid/view"), '!username' => theme('username', array('account' => $revision))))
-               . (($revision->log != '') ? '<p class="revision-log">' . filter_xss($revision->log) . '</p>' : '');
+               . (($revision->log !== '') ? '<p class="revision-log">' . filter_xss($revision->log) . '</p>' : '');
       if ($revert_permission) {
         $operations[] = l(t('revert'), "node/$node->nid/revisions/$revision->vid/revert");
       }
diff --git a/core/modules/node/node.test b/core/modules/node/node.test
index 1dbcaf3..f1efa5c 100644
--- a/core/modules/node/node.test
+++ b/core/modules/node/node.test
@@ -17,7 +17,7 @@ class NodeWebTestCase extends DrupalWebTestCase {
     parent::setUp($modules);
 
     // Create Basic page and Article node types.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
@@ -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/node_access_test.install b/core/modules/node/tests/node_access_test.install
index 6b3ef5d..1f33d51 100644
--- a/core/modules/node/tests/node_access_test.install
+++ b/core/modules/node/tests/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/node_access_test.module b/core/modules/node/tests/node_access_test.module
index d9e6e2f..e6a2836 100644
--- a/core/modules/node/tests/node_access_test.module
+++ b/core/modules/node/tests/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/node_test.module b/core/modules/node/tests/node_test.module
index b0ebc14..03d8835 100644
--- a/core/modules/node/tests/node_test.module
+++ b/core/modules/node/tests/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',
@@ -41,7 +41,7 @@ function node_test_node_view($node, $view_mode) {
     );
   }
 
-  if ($view_mode != 'rss') {
+  if ($view_mode !== 'rss') {
     // Add content that should NOT be displayed in the RSS feed.
     $node->content['extra_non_feed_content'] = array(
       '#markup' => '<p>' . t('Extra data that should appear everywhere except the RSS feed for node !nid.', array('!nid' => $node->nid)) . '</p>',
@@ -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,15 +124,15 @@ 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 ($node->original->title != $node->title) {
+  if (!empty($node->original) && $node->original->title === 'test_changes') {
+    if ($node->original->title !== $node->title) {
       $node->title .= '_presave';
     }
   }
@@ -143,8 +143,8 @@ 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 ($node->original->title != $node->title) {
+  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/node_test_exception.module b/core/modules/node/tests/node_test_exception.module
index 0fe9f35..1686249 100644
--- a/core/modules/node/tests/node_test_exception.module
+++ b/core/modules/node/tests/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..d94ed74 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,8 +320,8 @@ function _openid_encode_message($message) {
   foreach ($items as $item) {
     $parts = explode(':', $item, 2);
 
-    if (count($parts) == 2) {
-      if ($encoded_message != '') {
+    if (count($parts) === 2) {
+      if ($encoded_message !== '') {
         $encoded_message .= '&';
       }
       $encoded_message .= rawurlencode(trim($parts[0])) . '=' . rawurlencode(trim($parts[1]));
@@ -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..f4ed996 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.
@@ -416,7 +416,7 @@ function openid_complete($response = array()) {
             // to the OpenID Provider, we need to do discovery on the returned
             // identififer to make sure that the provider is authorized to
             // respond on behalf of this.
-            if ($response_claimed_id != $claimed_id) {
+            if ($response_claimed_id !== $claimed_id) {
               $discovery = openid_discovery($response['openid.claimed_id']);
               if ($discovery && !empty($discovery['services'])) {
                 $uris = array();
@@ -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');
@@ -976,7 +976,7 @@ function openid_verify_assertion_signature($service, $association, $response) {
  *   TRUE if the nonce has not expired and has not been used earlier.
  */
 function openid_verify_assertion_nonce($service, $response) {
-  if ($service['version'] != 2) {
+  if ($service['version'] !== 2) {
     return TRUE;
   }
 
@@ -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 {
@@ -1046,7 +1046,7 @@ function openid_verify_assertion_return_url($service, $response) {
   $base_url_parts = parse_url($base_url);
   $current_parts = parse_url($base_url_parts['scheme'] .'://'. $base_url_parts['host'] . request_uri());
 
-  if ($return_to_parts['scheme'] != $current_parts['scheme'] || $return_to_parts['host'] != $current_parts['host'] || $return_to_parts['path'] != $current_parts['path']) {
+  if ($return_to_parts['scheme'] !== $current_parts['scheme'] || $return_to_parts['host'] !== $current_parts['host'] || $return_to_parts['path'] !== $current_parts['path']) {
     return FALSE;
   }
   // Verify that all query parameters in the openid.return_to URL have
@@ -1054,7 +1054,7 @@ function openid_verify_assertion_return_url($service, $response) {
   // contains a number of other parameters added by the OpenID Provider.
   parse_str(isset($return_to_parts['query']) ? $return_to_parts['query'] : '', $return_to_query_parameters);
   foreach ($return_to_query_parameters as $name => $value) {
-    if (!isset($_GET[$name]) || $_GET[$name] != $value) {
+    if (!isset($_GET[$name]) || $_GET[$name] !== $value) {
       return FALSE;
     }
   }
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..492befd 100644
--- a/core/modules/openid/openid.test
+++ b/core/modules/openid/openid.test
@@ -35,7 +35,7 @@ abstract class OpenIDWebTestCase extends DrupalWebTestCase {
       ->execute();
 
     // Create Basic page and Article node types.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
@@ -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..5f0df27 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,20 +90,20 @@ 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') {
+        if (arg(4) !== '@example*résumé;%25' || $_GET['_xrd_r'] !== 'application/xrds xml') {
           drupal_not_found();
         }
       }
       else {
         // Drupal cannot properly emulate an XRI proxy resolver using unclean
         // URLs, so the arguments gets messed up.
-        if (arg(4) . '/' . arg(5) != '@example*résumé;%25?_xrd_r=application/xrds xml') {
+        if (arg(4) . '/' . arg(5) !== '@example*résumé;%25?_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 {
@@ -311,7 +311,7 @@ function _openid_test_endpoint_authenticate() {
   module_load_include('inc', 'openid');
 
   $expected_identity = variable_get('openid_test_identity');
-  if ($expected_identity && $_REQUEST['openid_identity'] != $expected_identity) {
+  if ($expected_identity && $_REQUEST['openid_identity'] !== $expected_identity) {
     $response = variable_get('openid_test_response', array()) + array(
       'openid.ns' => OPENID_NS_2_0,
       'openid.mode' => 'error',
diff --git a/core/modules/overlay/overlay-child.js b/core/modules/overlay/overlay-child.js
index ff111d8..064b95e 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..7ee4cef 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;
   }
 
@@ -399,7 +399,7 @@ Drupal.overlay.eventhandlerOuterResize = function (event) {
   }
 
   // IE6 uses position:absolute instead of position:fixed.
-  if (typeof document.body.style.maxHeight != 'string') {
+  if (typeof document.body.style.maxHeight !== 'string') {
     this.activeFrame.height($(window).height());
   }
 
@@ -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.
@@ -596,7 +596,7 @@ Drupal.overlay.eventhandlerOverrideLink = function (event) {
     else if (this.isOpen && target.ownerDocument === this.iframeWindow.document) {
       // Open external links in the immediate parent of the frame, unless the
       // link already has a different target.
-      if (target.hostname != window.location.hostname) {
+      if (target.hostname !== window.location.hostname) {
         if (!$target.attr('target')) {
           $target.attr('target', '_parent');
         }
@@ -688,7 +688,7 @@ Drupal.overlay.eventhandlerSyncURLFragment = function (event) {
   if (this.isOpen) {
     var expected = $.bbq.getState('overlay');
     // This is just a sanity check, so we're comparing paths, not query strings.
-    if (this.getPath(Drupal.settings.basePath + expected) != this.getPath(this.iframeWindow.document.location)) {
+    if (this.getPath(Drupal.settings.basePath + expected) !== this.getPath(this.iframeWindow.document.location)) {
       // There may have been a redirect inside the child overlay window that the
       // parent wasn't aware of. Update the parent URL fragment appropriately.
       var newLocation = Drupal.overlay.fragmentizeLink(this.iframeWindow.document.location);
@@ -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,22 +834,22 @@ 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);
   }
 
   var path = link.pathname;
   // Ensure a leading slash on the path, omitted in some browsers.
-  if (path.charAt(0) != '/') {
+  if (path.charAt(0) !== '/') {
     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..fd01096 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
@@ -182,7 +182,7 @@ function overlay_exit() {
       // something must have changed, so we request a refresh of that region
       // within the parent window on the next page request.
       foreach (overlay_supplemental_regions() as $region) {
-        if (!isset($original_markup[$region]) || $original_markup[$region] != overlay_render_region($region)) {
+        if (!isset($original_markup[$region]) || $original_markup[$region] !== overlay_render_region($region)) {
           overlay_request_refresh($region);
         }
       }
@@ -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/path/path.admin.inc b/core/modules/path/path.admin.inc
index 24921b8..2006757 100644
--- a/core/modules/path/path.admin.inc
+++ b/core/modules/path/path.admin.inc
@@ -69,7 +69,7 @@ function path_admin_overview($keys = NULL) {
 
     // If the system path maps to a different URL alias, highlight this table
     // row to let the user know of old aliases.
-    if ($data->alias != drupal_get_path_alias($data->source, $data->langcode)) {
+    if ($data->alias !== drupal_get_path_alias($data->source, $data->langcode)) {
       $row['class'] = array('warning');
     }
 
diff --git a/core/modules/path/path.module b/core/modules/path/path.module
index 10eb127..91e1038 100644
--- a/core/modules/path/path.module
+++ b/core/modules/path/path.module
@@ -99,7 +99,7 @@ function path_form_node_form_alter(&$form, $form_state) {
   $path = array();
   if (!empty($form['#node']->nid)) {
     $conditions = array('source' => 'node/' . $form['#node']->nid);
-    if ($form['#node']->langcode != LANGUAGE_NOT_SPECIFIED) {
+    if ($form['#node']->langcode !== LANGUAGE_NOT_SPECIFIED) {
       $conditions['langcode'] = $form['#node']->langcode;
     }
     $path = path_load($conditions);
diff --git a/core/modules/path/path.test b/core/modules/path/path.test
index 4dcd611..4025907 100644
--- a/core/modules/path/path.test
+++ b/core/modules/path/path.test
@@ -19,7 +19,7 @@ class PathTestCase extends DrupalWebTestCase {
     parent::setUp($modules);
 
     // Create Basic page and Article node types.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
diff --git a/core/modules/poll/poll.module b/core/modules/poll/poll.module
index c801579..8d7e8a4 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);
 
@@ -438,7 +438,7 @@ function poll_validate($node, $form) {
     // Check for at least two options and validate amount of votes.
     $realchoices = 0;
     foreach ($node->choice as $i => $choice) {
-      if ($choice['chtext'] != '') {
+      if ($choice['chtext'] !== '') {
         $realchoices++;
       }
     }
@@ -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;
@@ -530,7 +530,7 @@ function poll_insert($node) {
     ->execute();
 
   foreach ($node->choice as $choice) {
-    if ($choice['chtext'] != '') {
+    if ($choice['chtext'] !== '') {
       db_insert('poll_choice')
         ->fields(array(
           'nid' => $node->nid,
@@ -674,7 +674,7 @@ function poll_teaser($node) {
   $teaser = NULL;
   if (is_array($node->choice)) {
     foreach ($node->choice as $k => $choice) {
-      if ($choice['chtext'] != '') {
+      if ($choice['chtext'] !== '') {
         $teaser .= '* ' . check_plain($choice['chtext']) . "\n";
       }
     }
@@ -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..a820267 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];
@@ -723,7 +723,7 @@ function rdf_preprocess_comment(&$variables) {
     $variables['rdf_metadata_attributes_array'][] = $parent_node_attributes;
 
     // Adds the relation to parent comment, if it exists.
-    if ($comment->pid != 0) {
+    if ($comment->pid !== 0) {
       $parent_comment_attributes['rel'] = $comment->rdf_mapping['pid']['predicates'];
       // The parent comment URI is precomputed as part of the rdf_data so that
       // it can be cached as part of the entity.
@@ -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/search.admin.inc b/core/modules/search/search.admin.inc
index fda14ee..b1eb208 100644
--- a/core/modules/search/search.admin.inc
+++ b/core/modules/search/search.admin.inc
@@ -143,7 +143,7 @@ function search_admin_settings($form) {
  */
 function search_admin_settings_validate($form, &$form_state) {
   // Check whether we selected a valid default.
-  if ($form_state['triggering_element']['#value'] != t('Reset to defaults')) {
+  if ($form_state['triggering_element']['#value'] !== t('Reset to defaults')) {
     $new_modules = array_filter($form_state['values']['search_active_modules']);
     $default = $form_state['values']['search_default_module'];
     if (!in_array($default, $new_modules, TRUE)) {
@@ -157,14 +157,14 @@ function search_admin_settings_validate($form, &$form_state) {
  */
 function search_admin_settings_submit($form, &$form_state) {
   // If these settings change, the index needs to be rebuilt.
-  if ((variable_get('minimum_word_size', 3) != $form_state['values']['minimum_word_size']) ||
-      (variable_get('overlap_cjk', TRUE) != $form_state['values']['overlap_cjk'])) {
+  if ((variable_get('minimum_word_size', 3) !== $form_state['values']['minimum_word_size']) ||
+      (variable_get('overlap_cjk', TRUE) !== $form_state['values']['overlap_cjk'])) {
     drupal_set_message(t('The index will be rebuilt.'));
     search_reindex();
   }
   $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.extender.inc b/core/modules/search/search.extender.inc
index 73f7836..ff871a6 100644
--- a/core/modules/search/search.extender.inc
+++ b/core/modules/search/search.extender.inc
@@ -189,7 +189,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;
     }
 
@@ -209,7 +209,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;
@@ -222,12 +222,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)) {
@@ -239,14 +239,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) {
@@ -304,7 +304,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>.'));
     }
   }
@@ -344,7 +344,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;
     }
@@ -464,7 +464,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.module b/core/modules/search/search.module
index 587ef43..2cc0ab0 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,10 +608,10 @@ 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) {
+        if (!count($tagstack) || $tagstack[0] !== $tagname) {
           $tagstack = array();
           $score = 1;
         }
@@ -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]);
@@ -655,7 +655,7 @@ function search_index($sid, $module, $text) {
     }
     else {
       // Note: use of PREG_SPLIT_DELIM_CAPTURE above will introduce empty values
-      if ($value != '') {
+      if ($value !== '') {
         if ($link) {
           // Check to see if the node link text is its URL. If so, we use the target node title instead.
           if (preg_match('!^https?://!i', $value)) {
@@ -743,7 +743,7 @@ function search_index($sid, $module, $text) {
   foreach ($results as $nid => $words) {
     $caption = implode(' ', $words);
     if (isset($links[$nid])) {
-      if ($links[$nid] != $caption) {
+      if ($links[$nid] !== $caption) {
         // Update the existing link and mark the node for reindexing.
         db_update('search_node_links')
           ->fields(array('caption' => $caption))
@@ -756,7 +756,7 @@ function search_index($sid, $module, $text) {
       // Unset the link to mark it as processed.
       unset($links[$nid]);
     }
-    elseif ($sid != $nid || $module != 'node') {
+    elseif ($sid !== $nid || $module !== 'node') {
       // Insert the existing link and mark the node for reindexing, but don't
       // reindex if this is a link in a node pointing to itself.
       db_insert('search_node_links')
@@ -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..85e2ca9 100644
--- a/core/modules/search/search.pages.inc
+++ b/core/modules/search/search.pages.inc
@@ -50,7 +50,7 @@ function search_view($module = NULL, $keys = '') {
   // which will get us back to this page callback. In other words, the search
   // form submits with POST but redirects to GET. This way we can keep
   // the search query URL clean as a whistle.
-  if (empty($_POST['form_id']) || $_POST['form_id'] != 'search_form') {
+  if (empty($_POST['form_id']) || $_POST['form_id'] !== 'search_form') {
     $conditions =  NULL;
     if (isset($info['conditions_callback'])) {
       // Build an optional array of more search conditions.
@@ -109,7 +109,7 @@ function template_preprocess_search_result(&$variables) {
   $result = $variables['result'];
   $variables['url'] = check_url($result['link']);
   $variables['title'] = check_plain($result['title']);
-  if (isset($result['language']) && $result['language'] != $language_interface->langcode && $result['language'] != LANGUAGE_NOT_SPECIFIED) {
+  if (isset($result['language']) && $result['language'] !== $language_interface->langcode && $result['language'] !== LANGUAGE_NOT_SPECIFIED) {
     $variables['title_attributes_array']['lang'] = $result['language'];
     $variables['content_attributes_array']['lang'] = $result['language'];
   }
@@ -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 8b67b0b..c7ef4c4 100644
--- a/core/modules/search/search.test
+++ b/core/modules/search/search.test
@@ -23,7 +23,7 @@ class SearchWebTestCase extends DrupalWebTestCase {
     parent::setUp($modules);
 
     // Create Basic page and Article node types.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
@@ -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'));
@@ -1526,7 +1526,7 @@ class SearchConfigSettingsForm extends SearchWebTestCase {
 
       // Verify that other module search tab titles are not visible.
       foreach ($modules as $other) {
-        if ($other != $module) {
+        if ($other !== $module) {
           $title = $module_info[$other]['title'];
           $this->assertNoText($title, $title . ' search tab is not shown');
         }
diff --git a/core/modules/shortcut/shortcut.admin.inc b/core/modules/shortcut/shortcut.admin.inc
index 75c12b4..20e7205 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,
     );
@@ -77,7 +77,7 @@ function shortcut_set_switch($form, &$form_state, $account = NULL) {
       '#access' => $add_access,
     );
 
-    if ($user->uid != $account->uid) {
+    if ($user->uid !== $account->uid) {
       $default_set = shortcut_default_set($account);
       $form['new']['#description'] = t('The new set is created by copying items from the %default set.', array('%default' => $default_set->title));
     }
@@ -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(
@@ -628,7 +628,7 @@ function shortcut_set_edit_form($form, &$form_state, $shortcut_set) {
 function shortcut_set_edit_form_validate($form, &$form_state) {
   // Check to prevent a duplicate title, if the title was edited from its
   // original value.
-  if ($form_state['values']['title'] != $form_state['values']['shortcut_set']->title && shortcut_set_title_exists($form_state['values']['title'])) {
+  if ($form_state['values']['title'] !== $form_state['values']['shortcut_set']->title && shortcut_set_title_exists($form_state['values']['title'])) {
     form_set_error('title', t('The shortcut set %name already exists. Choose another name.', array('%name' => $form_state['values']['title'])));
   }
 }
diff --git a/core/modules/shortcut/shortcut.admin.js b/core/modules/shortcut/shortcut.admin.js
index 2647f34..82bbb18 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.
@@ -55,7 +55,7 @@ Drupal.behaviors.shortcutDrag = {
             tableDrag.rowStatusChange(changedRowObject);
           }
         }
-        else if (total != visibleLength) {
+        else if (total !== visibleLength) {
           if (total > visibleLength) {
             // Less slots on screen than needed.
             $('.shortcut-slot-empty:hidden:last').show();
diff --git a/core/modules/shortcut/shortcut.install b/core/modules/shortcut/shortcut.install
index 60c113a..edf35cd 100644
--- a/core/modules/shortcut/shortcut.install
+++ b/core/modules/shortcut/shortcut.install
@@ -35,7 +35,7 @@ function shortcut_install() {
   // we check the 'install_task' variable instead, which is only "done" when
   // Drupal is already installed (i.e., we are not in the installer).
   // @see http://drupal.org/node/1376150
-  if (variable_get('install_task', '') != 'done') {
+  if (variable_get('install_task', '') !== 'done') {
     menu_rebuild();
   }
   shortcut_set_save($shortcut_set);
diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index aa43503..4a5af17 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;
   }
 
@@ -614,7 +614,7 @@ function shortcut_set_title_exists($title) {
 function shortcut_valid_link($path) {
   // Do not use URL aliases.
   $normal_path = drupal_get_normal_path($path);
-  if ($path != $normal_path) {
+  if ($path !== $normal_path) {
     $path = $normal_path;
   }
   // Only accept links that correspond to valid paths on the site itself.
@@ -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..8be8ef4 100644
--- a/core/modules/shortcut/shortcut.test
+++ b/core/modules/shortcut/shortcut.test
@@ -34,7 +34,7 @@ class ShortcutTestCase extends DrupalWebTestCase {
     parent::setUp('toolbar', 'shortcut');
 
     // Create Basic page and Article node types.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
@@ -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..fad07bb 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);
   }
 
   /**
@@ -354,7 +354,7 @@ abstract class DrupalTestCase {
    *   TRUE if the assertion succeeded, FALSE otherwise.
    */
   protected function assertNotEqual($first, $second, $message = '', $group = 'Other') {
-    return $this->assert($first != $second, $message ? $message : t('Value @first is not 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 not 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),
@@ -1070,7 +1070,7 @@ class DrupalWebTestCase extends DrupalTestCase {
       if ($size !== NULL) {
         foreach ($files as $file) {
           $stats = stat($file->uri);
-          if ($stats['size'] != $size) {
+          if ($stats['size'] !== $size) {
             unset($files[$file->uri]);
           }
         }
@@ -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($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,8 +1751,8 @@ 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 ($value != 'deleted') {
+      if ($name === $this->session_name) {
+        if ($value !== 'deleted') {
           $this->session_id = $value;
         }
         else {
@@ -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,7 +2320,7 @@ class DrupalWebTestCase extends DrupalTestCase {
             else {
               // Single select box.
               foreach ($options as $option) {
-                if ($new_value == $option['value']) {
+                if ($new_value === $option['value']) {
                   $post[$name] = $new_value;
                   unset($edit[$name]);
                   $done = TRUE;
@@ -2364,7 +2364,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;
             }
@@ -2740,7 +2740,7 @@ class DrupalWebTestCase extends DrupalTestCase {
 
     foreach ($captured_emails as $message) {
       foreach ($filter as $key => $value) {
-        if (!isset($message[$key]) || $message[$key] != $value) {
+        if (!isset($message[$key]) || $message[$key] !== $value) {
           continue 2;
         }
       }
@@ -2901,7 +2901,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 +2973,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);
   }
 
   /**
@@ -3084,24 +3084,24 @@ class DrupalWebTestCase extends DrupalTestCase {
       $found = FALSE;
       if ($fields) {
         foreach ($fields as $field) {
-          if (isset($field['value']) && $field['value'] == $value) {
+          if (isset($field['value']) && $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) && $items[0]['value'] === $value) {
                 $found = TRUE;
               }
             }
           }
-          elseif ((string) $field == $value) {
+          elseif ((string) $field === $value) {
             // Text area with correct text.
             $found = TRUE;
           }
@@ -3124,7 +3124,7 @@ class DrupalWebTestCase extends DrupalTestCase {
       if (isset($item['selected'])) {
         return $item['value'];
       }
-      elseif ($item->getName() == 'optgroup') {
+      elseif ($item->getName() === 'optgroup') {
         if ($value = $this->getSelectedItem($item)) {
           return $value;
         }
@@ -3157,7 +3157,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 +3442,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 +3460,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 +3482,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.install b/core/modules/simpletest/simpletest.install
index f8f4d87..e96434d 100644
--- a/core/modules/simpletest/simpletest.install
+++ b/core/modules/simpletest/simpletest.install
@@ -63,7 +63,7 @@ function simpletest_requirements($phase) {
   // Check the current memory limit. If it is set too low, SimpleTest will fail
   // to load all tests and throw a fatal error.
   $memory_limit = ini_get('memory_limit');
-  if ($memory_limit && $memory_limit != -1 && parse_size($memory_limit) < parse_size(SIMPLETEST_MINIMUM_PHP_MEMORY_LIMIT)) {
+  if ($memory_limit && $memory_limit !== -1 && parse_size($memory_limit) < parse_size(SIMPLETEST_MINIMUM_PHP_MEMORY_LIMIT)) {
     $requirements['php_memory_limit']['severity'] = REQUIREMENT_ERROR;
     $requirements['php_memory_limit']['description'] = $t('The testing framework requires the PHP memory limit to be at least %memory_minimum_limit. The current value is %memory_limit. <a href="@url">Follow these steps to continue</a>.', array('%memory_limit' => $memory_limit, '%memory_minimum_limit' => SIMPLETEST_MINIMUM_PHP_MEMORY_LIMIT, '@url' => 'http://drupal.org/node/207036'));
   }
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 55a48be..7efcad1 100644
--- a/core/modules/simpletest/simpletest.test
+++ b/core/modules/simpletest/simpletest.test
@@ -149,7 +149,7 @@ class SimpleTestFunctionalTest extends DrupalWebTestCase {
 
       // Regression test for #290316.
       // Check that test_id is incrementing.
-      $this->assertTrue($this->test_ids[0] != $this->test_ids[1], t('Test ID is incrementing.'));
+      $this->assertTrue($this->test_ids[0] !== $this->test_ids[1], t('Test ID is incrementing.'));
     }
   }
 
@@ -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/simpletest/tests/ajax.test b/core/modules/simpletest/tests/ajax.test
index 4f254f8..6f0ae1c 100644
--- a/core/modules/simpletest/tests/ajax.test
+++ b/core/modules/simpletest/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/simpletest/tests/batch_test.callbacks.inc b/core/modules/simpletest/tests/batch_test.callbacks.inc
index 75e6655..36a0697 100644
--- a/core/modules/simpletest/tests/batch_test.callbacks.inc
+++ b/core/modules/simpletest/tests/batch_test.callbacks.inc
@@ -47,7 +47,7 @@ function _batch_test_callback_2($start, $total, $sleep, &$context) {
   $context['sandbox']['current'] += $i;
 
   // Inform batch engine about progress.
-  if ($context['sandbox']['count'] != $total) {
+  if ($context['sandbox']['count'] !== $total) {
     $context['finished'] = $context['sandbox']['count'] / $total;
   }
 }
diff --git a/core/modules/simpletest/tests/bootstrap.test b/core/modules/simpletest/tests/bootstrap.test
index 371031a..1d3910b 100644
--- a/core/modules/simpletest/tests/bootstrap.test
+++ b/core/modules/simpletest/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/simpletest/tests/cache.test b/core/modules/simpletest/tests/cache.test
index e5d4435..18bfff1 100644
--- a/core/modules/simpletest/tests/cache.test
+++ b/core/modules/simpletest/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/simpletest/tests/common.test b/core/modules/simpletest/tests/common.test
index 12df48c..5df3070 100644
--- a/core/modules/simpletest/tests/common.test
+++ b/core/modules/simpletest/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 . ')'
       );
     }
   }
@@ -1633,8 +1633,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.
@@ -2096,14 +2096,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.'));
@@ -2120,7 +2120,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();
@@ -2192,7 +2192,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();
@@ -2200,11 +2200,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.'));
   }
 
 }
@@ -2244,7 +2244,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');
@@ -2274,7 +2274,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.
@@ -2696,9 +2696,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);
@@ -2748,7 +2748,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/simpletest/tests/common_test.module b/core/modules/simpletest/tests/common_test.module
index 187fee5..377c98b 100644
--- a/core/modules/simpletest/tests/common_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/database_test.test b/core/modules/simpletest/tests/database_test.test
index 04181b3..178d28a 100644
--- a/core/modules/simpletest/tests/database_test.test
+++ b/core/modules/simpletest/tests/database_test.test
@@ -1866,7 +1866,7 @@ class DatabaseSelectOrderedTestCase extends DatabaseTestCase {
     foreach ($expected as $k => $record) {
       $num_records++;
       foreach ($record as $kk => $col) {
-        if ($expected[$k][$kk] != $results[$k][$kk]) {
+        if ($expected[$k][$kk] !== $results[$k][$kk]) {
           $this->assertTrue(FALSE, t('Results returned in correct order.'));
         }
       }
@@ -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);
       }
 
@@ -3174,7 +3174,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
@@ -3300,7 +3300,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().'));
     }
   }
 
@@ -3358,7 +3358,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/simpletest/tests/file.test b/core/modules/simpletest/tests/file.test
index c5eced1..3114b41 100644
--- a/core/modules/simpletest/tests/file.test
+++ b/core/modules/simpletest/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');
   }
 
   /**
@@ -89,8 +89,8 @@ class FileTestCase extends DrupalWebTestCase {
    *   File object to compare.
    */
   function assertDifferentFile($file1, $file2) {
-    $this->assertNotEqual($file1->fid, $file2->fid, t('Files have different ids: %file1 != %file2.', array('%file1' => $file1->fid, '%file2' => $file2->fid)), 'Different file');
-    $this->assertNotEqual($file1->uri, $file2->uri, t('Files have different paths: %file1 != %file2.', array('%file1' => $file1->uri, '%file2' => $file2->uri)), 'Different file');
+    $this->assertNotEqual($file1->fid, $file2->fid, t('Files have different ids: %file1 !== %file2.', array('%file1' => $file1->fid, '%file2' => $file2->fid)), 'Different file');
+    $this->assertNotEqual($file1->uri, $file2->uri, t('Files have different paths: %file1 !== %file2.', array('%file1' => $file1->uri, '%file2' => $file2->uri)), 'Different file');
   }
 
   /**
@@ -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 {
@@ -942,7 +942,7 @@ class FileDirectoryTest extends FileTestCase {
     // Make sure directory actually exists.
     $this->assertTrue(is_dir($directory), t('Directory actually exists.'), 'File');
 
-    if (substr(PHP_OS, 0, 3) != 'WIN') {
+    if (substr(PHP_OS, 0, 3) !== 'WIN') {
       // PHP on Windows doesn't support any kind of useful read-only mode for
       // directories. When executing a chmod() on a directory, PHP only sets the
       // read-only flag, which doesn't prevent files to actually be written
@@ -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/simpletest/tests/file_test.module b/core/modules/simpletest/tests/file_test.module
index 8a9a84a..422149d 100644
--- a/core/modules/simpletest/tests/file_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/filetransfer.test b/core/modules/simpletest/tests/filetransfer.test
index 8f447d9..7a3b71b 100644
--- a/core/modules/simpletest/tests/filetransfer.test
+++ b/core/modules/simpletest/tests/filetransfer.test
@@ -42,7 +42,7 @@ class FileTranferTest extends DrupalWebTestCase {
       $ret = 0;
       $output = array();
       exec('rm -Rf ' . escapeshellarg($location), $output, $ret);
-      if ($ret != 0) {
+      if ($ret !== 0) {
         throw new Exception('Error removing fake module directory.');
       }
     }
@@ -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/simpletest/tests/form.test b/core/modules/simpletest/tests/form.test
index eed1287..6a426a1 100644
--- a/core/modules/simpletest/tests/form.test
+++ b/core/modules/simpletest/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/simpletest/tests/form_test.module b/core/modules/simpletest/tests/form_test.module
index 01908b9..55638bf 100644
--- a/core/modules/simpletest/tests/form_test.module
+++ b/core/modules/simpletest/tests/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',
@@ -1019,7 +1019,7 @@ function _form_test_checkbox($form, &$form_state) {
     '#title' => 'zero_checkbox_on',
   );
 
-  // In that case, passing a #default_value != '0' means that the checkbox is off.
+  // In that case, passing a #default_value !== '0' means that the checkbox is off.
   $form['zero_checkbox_off'] = array(
     '#type' => 'checkbox',
     '#return_value' => '0',
@@ -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,
     );
   }
@@ -1810,7 +1810,7 @@ function form_test_programmatic_form($form, &$form_state) {
     // #limit_validation_errors property.)
     '#submit' => array('form_test_programmatic_form_submit'),
   );
-  if (!empty($form_state['input']['field_to_validate']) && $form_state['input']['field_to_validate'] != 'all') {
+  if (!empty($form_state['input']['field_to_validate']) && $form_state['input']['field_to_validate'] !== 'all') {
     $form['submit_limit_validation']['#limit_validation_errors'] = array(
       array($form_state['input']['field_to_validate']),
     );
@@ -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/simpletest/tests/image.test b/core/modules/simpletest/tests/image.test
index deead57..a31ff36 100644
--- a/core/modules/simpletest/tests/image.test
+++ b/core/modules/simpletest/tests/image.test
@@ -231,12 +231,12 @@ 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;
     }
 
     foreach ($color_a as $key => $value) {
-      if ($color_b[$key] != $value) {
+      if ($color_b[$key] !== $value) {
         return FALSE;
       }
     }
@@ -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;
           }
         }
@@ -414,12 +414,12 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
         $correct_colors = TRUE;
 
         // Check the real dimensions of the image first.
-        if (imagesy($image->resource) != $values['height'] || imagesx($image->resource) != $values['width']) {
+        if (imagesy($image->resource) !== $values['height'] || imagesx($image->resource) !== $values['width']) {
           $correct_dimensions_real = FALSE;
         }
 
         // Check that the image object has an accurate record of the dimensions.
-        if ($image->info['width'] != $values['width'] || $image->info['height'] != $values['height']) {
+        if ($image->info['width'] !== $values['width'] || $image->info['height'] !== $values['height']) {
           $correct_dimensions_object = FALSE;
         }
         // Now check each of the corners to ensure color correctness.
@@ -454,7 +454,7 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase {
         $this->assertTrue($correct_dimensions_real, t('Image %file after %action action has proper dimensions.', array('%file' => $file, '%action' => $op)));
         $this->assertTrue($correct_dimensions_object, t('Image %file object after %action action is reporting the proper height and width values.', array('%file' => $file, '%action' => $op)));
         // JPEG colors will always be messed up due to compression.
-        if ($image->info['extension'] != 'jpg') {
+        if ($image->info['extension'] !== 'jpg') {
           $this->assertTrue($correct_colors, t('Image %file object after %action action has the correct color placement.', array('%file' => $file, '%action' => $op)));
         }
       }
diff --git a/core/modules/simpletest/tests/installer.test b/core/modules/simpletest/tests/installer.test
index 82e9957..72eabc8 100644
--- a/core/modules/simpletest/tests/installer.test
+++ b/core/modules/simpletest/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/simpletest/tests/menu.test b/core/modules/simpletest/tests/menu.test
index 8d1d651..a471b38 100644
--- a/core/modules/simpletest/tests/menu.test
+++ b/core/modules/simpletest/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"));
   }
 
   /**
@@ -773,7 +773,7 @@ class MenuLinksUnitTestCase extends DrupalWebTestCase {
     // have been reassigned to the parent. menu_link_delete() will cowardly
     // refuse to delete a menu link defined by the system module, so skip the
     // test in that case.
-    if ($module != 'system') {
+    if ($module !== 'system') {
       $links = $this->createLinkHierarchy($module);
       menu_link_delete($links['child-1']['mlid']);
 
@@ -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/simpletest/tests/menu_test.module b/core/modules/simpletest/tests/menu_test.module
index 0b954ae..5c290fc 100644
--- a/core/modules/simpletest/tests/menu_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/module_test.module b/core/modules/simpletest/tests/module_test.module
index dd5930a..6b34700 100644
--- a/core/modules/simpletest/tests/module_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/pager.test b/core/modules/simpletest/tests/pager.test
index 6fdeec5..0dfa31e 100644
--- a/core/modules/simpletest/tests/pager.test
+++ b/core/modules/simpletest/tests/pager.test
@@ -75,7 +75,7 @@ class PagerFunctionalWebTestCase extends DrupalWebTestCase {
       $previous = array_shift($elements);
     }
     // next/last always exist, unless the current page is the last.
-    if ($current_page != count($elements)) {
+    if ($current_page !== count($elements)) {
       $last = array_pop($elements);
       $next = array_pop($elements);
     }
@@ -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/simpletest/tests/password.test b/core/modules/simpletest/tests/password.test
index 2797786..02129a4 100644
--- a/core/modules/simpletest/tests/password.test
+++ b/core/modules/simpletest/tests/password.test
@@ -38,7 +38,7 @@ class PasswordHashingTest extends DrupalWebTestCase {
     $old_hash = $account->pass;
     $account->pass = user_hash_password($password);
     $this->assertIdentical(_password_get_count_log2($account->pass), DRUPAL_MIN_HASH_COUNT, t('Re-hashed password has the minimum number of log2 iterations.'));
-    $this->assertTrue($account->pass != $old_hash, t('Password hash changed.'));
+    $this->assertTrue($account->pass !== $old_hash, t('Password hash changed.'));
     $this->assertTrue(user_check_password($password, $account), t('Password check succeeds.'));
     // Since the log2 setting hasn't changed and the user has a valid password,
     // user_needs_new_hash() should return FALSE.
@@ -50,7 +50,7 @@ class PasswordHashingTest extends DrupalWebTestCase {
     $old_hash = $account->pass;
     $account->pass = user_hash_password($password);
     $this->assertIdentical(_password_get_count_log2($account->pass), DRUPAL_MIN_HASH_COUNT + 1, t('Re-hashed password has the correct number of log2 iterations.'));
-    $this->assertTrue($account->pass != $old_hash, t('Password hash changed again.'));
+    $this->assertTrue($account->pass !== $old_hash, t('Password hash changed again.'));
     // Now the hash should be OK.
     $this->assertFalse(user_needs_new_hash($account), t('Re-hashed password does not need a new hash.'));
     $this->assertTrue(user_check_password($password, $account), t('Password check succeeds with re-hashed password.'));
diff --git a/core/modules/simpletest/tests/registry.test b/core/modules/simpletest/tests/registry.test
index bcd8d4e..251fb21 100644
--- a/core/modules/simpletest/tests/registry.test
+++ b/core/modules/simpletest/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/simpletest/tests/requirements1_test.install b/core/modules/simpletest/tests/requirements1_test.install
index 651d911..62ee495 100644
--- a/core/modules/simpletest/tests/requirements1_test.install
+++ b/core/modules/simpletest/tests/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/simpletest/tests/schema.test b/core/modules/simpletest/tests/schema.test
index 5a10567..3d2cc74 100644
--- a/core/modules/simpletest/tests/schema.test
+++ b/core/modules/simpletest/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/simpletest/tests/session.test b/core/modules/simpletest/tests/session.test
index 6303ca5..cf17a90 100644
--- a/core/modules/simpletest/tests/session.test
+++ b/core/modules/simpletest/tests/session.test
@@ -64,7 +64,7 @@ class SessionTestCase extends DrupalWebTestCase {
     $matches = array();
     preg_match('/\s*session_id:(.*)\n/', $this->drupalGetContent(), $matches);
     $this->assertTrue(!empty($matches[1]) , t('Found session ID after logging in.'));
-    $this->assertTrue($matches[1] != $original_session, t('Session ID changed after login.'));
+    $this->assertTrue($matches[1] !== $original_session, t('Session ID changed after login.'));
   }
 
   /**
@@ -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/simpletest/tests/session_test.module b/core/modules/simpletest/tests/session_test.module
index 689ff09..9ce4ae0 100644
--- a/core/modules/simpletest/tests/session_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/system_test.module b/core/modules/simpletest/tests/system_test.module
index e6d1f35..c30883b 100644
--- a/core/modules/simpletest/tests/system_test.module
+++ b/core/modules/simpletest/tests/system_test.module
@@ -121,7 +121,7 @@ function system_test_basic_auth_page() {
 
 function system_test_redirect($code) {
   $code = (int) $code;
-  if ($code != 200) {
+  if ($code !== 200) {
     // Header names are case-insensitive.
     header("locaTION: " . url('system-test/redirect/200', array('absolute' => TRUE)), TRUE, $code);
     exit;
@@ -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/simpletest/tests/taxonomy_test.module b/core/modules/simpletest/tests/taxonomy_test.module
index 72fb29d..ee12913 100644
--- a/core/modules/simpletest/tests/taxonomy_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/theme.test b/core/modules/simpletest/tests/theme.test
index 978887c..57da8b7 100644
--- a/core/modules/simpletest/tests/theme.test
+++ b/core/modules/simpletest/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/simpletest/tests/theme_test.module b/core/modules/simpletest/tests/theme_test.module
index f6065f2..990db0a 100644
--- a/core/modules/simpletest/tests/theme_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/unicode.test b/core/modules/simpletest/tests/unicode.test
index c50a437..c2419fa 100644
--- a/core/modules/simpletest/tests/unicode.test
+++ b/core/modules/simpletest/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/simpletest/tests/update.test b/core/modules/simpletest/tests/update.test
index abbab47..bf875c0 100644
--- a/core/modules/simpletest/tests/update.test
+++ b/core/modules/simpletest/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/simpletest/tests/update_script_test.install b/core/modules/simpletest/tests/update_script_test.install
index 8af516b..b9c5a14 100644
--- a/core/modules/simpletest/tests/update_script_test.install
+++ b/core/modules/simpletest/tests/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/simpletest/tests/upgrade/upgrade.language.test b/core/modules/simpletest/tests/upgrade/upgrade.language.test
index bcf73a1..5560f5c 100644
--- a/core/modules/simpletest/tests/upgrade/upgrade.language.test
+++ b/core/modules/simpletest/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/simpletest/tests/upgrade/upgrade.test b/core/modules/simpletest/tests/upgrade/upgrade.test
index e4045be..b7bcc46 100644
--- a/core/modules/simpletest/tests/upgrade/upgrade.test
+++ b/core/modules/simpletest/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/simpletest/tests/url_alter_test.module b/core/modules/simpletest/tests/url_alter_test.module
index 9287ff5..c585166 100644
--- a/core/modules/simpletest/tests/url_alter_test.module
+++ b/core/modules/simpletest/tests/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/simpletest/tests/xmlrpc.test b/core/modules/simpletest/tests/xmlrpc.test
index 60b9624..5fe2253 100644
--- a/core/modules/simpletest/tests/xmlrpc.test
+++ b/core/modules/simpletest/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/simpletest/tests/xmlrpc_test.module b/core/modules/simpletest/tests/xmlrpc_test.module
index db8f113..71909a1 100644
--- a/core/modules/simpletest/tests/xmlrpc_test.module
+++ b/core/modules/simpletest/tests/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/statistics/statistics.module b/core/modules/statistics/statistics.module
index af1f833..7a9baa1 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)))
@@ -115,7 +115,7 @@ function statistics_permission() {
  * Implements hook_node_view().
  */
 function statistics_node_view($node, $view_mode) {
-  if ($view_mode != 'rss') {
+  if ($view_mode !== 'rss') {
     if (user_access('view post access counter')) {
       $statistics = statistics_get($node->nid);
       if ($statistics) {
@@ -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..ac1c672 100644
--- a/core/modules/statistics/statistics.test
+++ b/core/modules/statistics/statistics.test
@@ -14,7 +14,7 @@ class StatisticsTestCase extends DrupalWebTestCase {
     parent::setUp(array('node', 'block', 'statistics'));
 
     // Create Basic page node type.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
     }
 
@@ -69,7 +69,7 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase {
     parent::setUp(array('statistics', 'block'));
 
     // Create Basic page node type.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
     }
 
@@ -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));
 
   }
@@ -312,7 +312,7 @@ class StatisticsAdminTestCase extends DrupalWebTestCase {
     parent::setUp(array('node', 'statistics'));
 
     // Create Basic page node type.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
     }
     $this->privileged_user = $this->drupalCreateUser(array('access statistics', 'administer statistics', 'view post access counter', 'create page content'));
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..7e3c72a 100644
--- a/core/modules/system/image.gd.inc
+++ b/core/modules/system/image.gd.inc
@@ -138,16 +138,16 @@ 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) {
+    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..be50099 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;
@@ -150,7 +150,7 @@ function system_themes_page() {
      // Ensure this theme is compatible with this version of core.
      // Require the 'content' region to make sure the main page
      // content has a common place in all themes.
-      $theme->incompatible_core = !isset($theme->info['core']) || ($theme->info['core'] != DRUPAL_CORE_COMPATIBILITY) || (!isset($theme->info['regions']['content']));
+      $theme->incompatible_core = !isset($theme->info['core']) || ($theme->info['core'] !== DRUPAL_CORE_COMPATIBILITY) || (!isset($theme->info['regions']['content']));
       $theme->incompatible_php = version_compare(phpversion(), $theme->info['php']) < 0;
     }
     $query['token'] = drupal_get_token('system-theme-operation-link');
@@ -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');
       }
@@ -337,7 +337,7 @@ function system_theme_default() {
       // The status message depends on whether an admin theme is currently in use:
       // a value of 0 means the admin theme is set to be the default theme.
       $admin_theme = variable_get('admin_theme', 0);
-      if ($admin_theme != 0 && $admin_theme != $theme) {
+      if ($admin_theme !== 0 && $admin_theme !== $theme) {
         drupal_set_message(t('Please note that the administration theme is still set to the %admin_theme theme; consequently, the theme on this page remains unchanged. All non-administrative sections of the site, however, will show the selected %selected_theme theme by default.', array(
           '%admin_theme' => $themes[$admin_theme]->info['name'],
           '%selected_theme' => $themes[$theme]->info['name'],
@@ -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.
@@ -824,7 +824,7 @@ function system_modules($form, $form_state = array()) {
         }
         // Disable this module if the dependency is incompatible with this
         // version of Drupal core.
-        elseif ($files[$requires]->info['core'] != DRUPAL_CORE_COMPATIBILITY) {
+        elseif ($files[$requires]->info['core'] !== DRUPAL_CORE_COMPATIBILITY) {
           $extra['requires'][$requires] = t('@module (<span class="admin-missing">incompatible with</span> this version of Drupal core)', array(
             '@module' => $requires_name,
           ));
@@ -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,
     );
   }
 
@@ -975,7 +975,7 @@ function _system_modules_build_row($info, $extra) {
   $status_long = '';
 
   // Check the core compatibility.
-  if (!isset($info['core']) || $info['core'] != DRUPAL_CORE_COMPATIBILITY) {
+  if (!isset($info['core']) || $info['core'] !== DRUPAL_CORE_COMPATIBILITY) {
     $compatible = FALSE;
     $status_short .= t('Incompatible with this version of Drupal core.');
     $status_long .= t('This version is not compatible with Drupal !core_version and should be replaced.', array('!core_version' => DRUPAL_CORE_COMPATIBILITY));
@@ -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;
       }
@@ -1195,7 +1195,7 @@ function system_modules_submit($form, &$form_state) {
   // Gets module list after install process, flushes caches and displays a
   // message if there are changes.
   $post_install_list = module_list(TRUE);
-  if ($pre_install_list != $post_install_list) {
+  if ($pre_install_list !== $post_install_list) {
     drupal_flush_all_caches();
     drupal_set_message(t('The configuration options have been saved.'));
   }
@@ -1256,7 +1256,7 @@ function system_modules_uninstall($form, $form_state = NULL) {
       // we can allow this module to be uninstalled. (The install profile is
       // excluded from this list.)
       foreach (array_keys($module->required_by) as $dependent) {
-        if ($dependent != $profile && drupal_get_installed_schema_version($dependent) != SCHEMA_UNINSTALLED) {
+        if ($dependent !== $profile && drupal_get_installed_schema_version($dependent) !== SCHEMA_UNINSTALLED) {
           $dependent_name = isset($all_modules[$dependent]->info['name']) ? $all_modules[$dependent]->info['name'] : $dependent;
           $form['modules'][$module->name]['#required_by'][] = $dependent_name;
           $form['uninstall'][$module->name]['#disabled'] = TRUE;
@@ -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.'));
   }
 }
@@ -1491,7 +1491,7 @@ function system_site_information_settings() {
   $form['front_page']['site_frontpage'] = array(
     '#type' => 'textfield',
     '#title' => t('Default front page'),
-    '#default_value' => (variable_get('site_frontpage') != 'user' ? drupal_get_path_alias(variable_get('site_frontpage', 'user')) : ''),
+    '#default_value' => (variable_get('site_frontpage') !== 'user' ? drupal_get_path_alias(variable_get('site_frontpage', 'user')) : ''),
     '#size' => 40,
     '#description' => t('Optionally, specify a relative URL to display as the front page.  Leave blank to display the default content feed.'),
     '#field_prefix' => url(NULL, array('absolute' => TRUE)) . (variable_get('clean_url', 0) ? '' : '?q='),
@@ -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
@@ -2904,7 +2904,7 @@ function system_configure_date_formats_form($form, &$form_state, $dfid = 0) {
 function system_add_date_formats_form_validate($form, &$form_state) {
   $formats = system_get_date_formats('custom');
   $format = trim($form_state['values']['date_format']);
-  if (!empty($formats) && in_array($format, array_keys($formats)) && (!isset($form_state['values']['dfid']) || $form_state['values']['dfid'] != $formats[$format]['dfid'])) {
+  if (!empty($formats) && in_array($format, array_keys($formats)) && (!isset($form_state['values']['dfid']) || $form_state['values']['dfid'] !== $formats[$format]['dfid'])) {
     form_set_error('date_format', t('This format already exists. Enter a unique format string.'));
   }
 }
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index 17df444..beb5c91 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();
   }
 }
@@ -923,7 +923,7 @@ function hook_menu_link_insert($link) {
 function hook_menu_link_update($link) {
   // If the parent menu has changed, update our record.
   $menu_name = db_query("SELECT menu_name FROM {menu_example} WHERE mlid = :mlid", array(':mlid' => $link['mlid']))->fetchField();
-  if ($menu_name != $link['menu_name']) {
+  if ($menu_name !== $link['menu_name']) {
     db_update('menu_example')
       ->fields(array('menu_name' => $link['menu_name']))
       ->condition('mlid', $link['mlid'])
@@ -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..87e6c54 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,
@@ -33,7 +33,7 @@ function system_requirements($phase) {
     // Display the currently active install profile, if the site
     // is not running the default install profile.
     $profile = drupal_get_profile();
-    if ($profile != 'standard') {
+    if ($profile !== 'standard') {
       $info = system_get_info('module', $profile);
       $requirements['install_profile'] = array(
         'title' => $t('Install profile'),
@@ -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 {
@@ -89,7 +89,7 @@ function system_requirements($phase) {
   // since we never want to tell the user that their site is secure
   // (register_globals off), when it is in fact on. We can only guarantee
   // register_globals is off if the value returned is 'off', '', or 0.
-  if (!empty($register_globals) && strtolower($register_globals) != 'off') {
+  if (!empty($register_globals) && strtolower($register_globals) !== 'off') {
     $requirements['php_register_globals']['description'] = $t('<em>register_globals</em> is enabled. Drupal requires this configuration directive to be disabled. Your site may not be secure when <em>register_globals</em> is enabled. The PHP manual has instructions for <a href="http://php.net/configuration.changes">how to change configuration settings</a>.');
     $requirements['php_register_globals']['severity'] = REQUIREMENT_ERROR;
     $requirements['php_register_globals']['value'] = $t("Enabled ('@value')", array('@value' => $register_globals));
@@ -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)) {
+  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.
@@ -278,7 +278,7 @@ function system_requirements($phase) {
     // Set summary and description based on values determined above.
     $summary = $t('Last run !time ago', array('!time' => format_interval(REQUEST_TIME - $cron_last)));
     $description = '';
-    if ($severity != REQUIREMENT_OK) {
+    if ($severity !== REQUIREMENT_OK) {
       $description = $t('Cron has not run recently.') . ' ' . $help;
     }
 
@@ -297,7 +297,7 @@ function system_requirements($phase) {
   // If we are installing Drupal, the settings.php file might not exist yet in
   // the intended conf_path() directory, so don't require it. The conf_path()
   // cache must also be reset in this case.
-  $require_settings = ($phase != 'install');
+  $require_settings = ($phase !== 'install');
   $reset_cache = !$require_settings;
   $directories = array(
     variable_get('file_public_path', conf_path($require_settings, $reset_cache) . '/files'),
@@ -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..cfc7d15 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', '') : ''),
-    '#options' => system_time_zones($account->uid != $user->uid),
+    '#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':
@@ -2160,7 +2160,7 @@ function system_admin_menu_block($item) {
   // local task (for example, admin/tasks), then we want to retrieve the
   // parent item's child links, not this item's (since this item won't have
   // any).
-  if ($item['tab_root'] != $item['path']) {
+  if ($item['tab_root'] !== $item['path']) {
     $item = menu_get_item($item['tab_root_href']);
   }
 
@@ -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);
     }
@@ -2288,14 +2288,14 @@ function system_update_files_database(&$files, $type) {
 
       // Handle info specially, compare the serialized value.
       $serialized_info = serialize($files[$file->name]->info);
-      if ($serialized_info != $file->info) {
+      if ($serialized_info !== $file->info) {
         $updated_fields['info'] = $serialized_info;
       }
       unset($file->info);
 
       // Scan remaining fields to find only the updated values.
       foreach ($file as $key => $value) {
-        if (isset($files[$file->name]->$key) && $files[$file->name]->$key != $value) {
+        if (isset($files[$file->name]->$key) && $files[$file->name]->$key !== $value) {
           $updated_fields[$key] = $files[$file->name]->$key;
         }
       }
@@ -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();
 }
 
@@ -3481,7 +3481,7 @@ function system_retrieve_file($url, $destination = NULL, $managed = FALSE, $repl
     }
   }
   $result = drupal_http_request($url);
-  if ($result->code != 200) {
+  if ($result->code !== 200) {
     drupal_set_message(t('HTTP error @errorcode occurred when trying to fetch @remote.', array('@errorcode' => $result->code, '@remote' => $url)), 'error');
     return FALSE;
   }
@@ -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..4849d58 100644
--- a/core/modules/system/system.test
+++ b/core/modules/system/system.test
@@ -209,7 +209,7 @@ class EnableDisableTestCase extends ModuleTestCase {
     // hidden or required.
     $modules = system_rebuild_module_data();
     foreach ($modules as $name => $module) {
-      if ($module->info['package'] != 'Core' || !empty($module->info['hidden']) || !empty($module->info['required'])) {
+      if ($module->info['package'] !== 'Core' || !empty($module->info['hidden']) || !empty($module->info['required'])) {
         unset($modules[$name]);
       }
     }
@@ -298,7 +298,7 @@ class EnableDisableTestCase extends ModuleTestCase {
         // same thing for modules that were enabled automatically.) Skip this
         // for the dblog module, because that is needed for the test; we'll go
         // back and do that one at the end also.
-        if ($name != 'dblog') {
+        if ($name !== 'dblog') {
           $this->assertSuccessfulDisableAndUninstall($name);
         }
       }
@@ -313,7 +313,7 @@ class EnableDisableTestCase extends ModuleTestCase {
         // again the next time. Otherwise, try to disable it.
         $this->drupalGet('admin/modules');
         $disabled_checkbox = $this->xpath('//input[@type="checkbox" and @disabled="disabled" and @name="modules[Core][' . $name . '][enable]"]');
-        if (empty($disabled_checkbox) && $name != 'dblog') {
+        if (empty($disabled_checkbox) && $name !== 'dblog') {
           unset($automatically_enabled[$name]);
           $this->assertSuccessfulDisableAndUninstall($name);
         }
@@ -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;
       }
@@ -384,7 +384,7 @@ class EnableDisableTestCase extends ModuleTestCase {
     // module was just uninstalled, since the {watchdog} table won't be there
     // anymore.)
     $this->assertText(t('hook_modules_uninstalled fired for @module', array('@module' => $module)));
-    if ($module != 'dblog') {
+    if ($module !== 'dblog') {
       $this->assertLogMessage('system', "%module module uninstalled.", array('%module' => $module), WATCHDOG_INFO);
     }
 
@@ -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/taxonomy/taxonomy.admin.inc b/core/modules/taxonomy/taxonomy.admin.inc
index a95b856..fbcc65b 100644
--- a/core/modules/taxonomy/taxonomy.admin.inc
+++ b/core/modules/taxonomy/taxonomy.admin.inc
@@ -49,7 +49,7 @@ function taxonomy_overview_vocabularies($form) {
  */
 function taxonomy_overview_vocabularies_submit($form, &$form_state) {
   foreach ($form_state['values'] as $vid => $vocabulary) {
-    if (is_numeric($vid) && $form[$vid]['#vocabulary']->weight != $form_state['values'][$vid]['weight']) {
+    if (is_numeric($vid) && $form[$vid]['#vocabulary']->weight !== $form_state['values'][$vid]['weight']) {
       $form[$vid]['#vocabulary']->weight = $form_state['values'][$vid]['weight'];
       taxonomy_vocabulary_save($form[$vid]['#vocabulary']);
     }
@@ -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;
@@ -370,7 +370,7 @@ function taxonomy_overview_terms($form, &$form_state, TaxonomyVocabulary $vocabu
     }
 
     $form[$key]['view'] = array('#type' => 'link', '#title' => $term->name, '#href' => "taxonomy/term/$term->tid");
-    if ($vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
+    if ($vocabulary->hierarchy !== TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
       $form['#parent_fields'] = TRUE;
       $form[$key]['tid'] = array(
         '#type' => 'hidden',
@@ -412,7 +412,7 @@ function taxonomy_overview_terms($form, &$form_state, TaxonomyVocabulary $vocabu
   $form['#forward_step'] = $forward_step;
   $form['#empty_text'] = t('No terms available. <a href="@link">Add term</a>.', array('@link' => url('admin/structure/taxonomy/' . $vocabulary->machine_name . '/add')));
 
-  if ($vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
+  if ($vocabulary->hierarchy !== TAXONOMY_HIERARCHY_MULTIPLE && count($tree) > 1) {
     $form['actions'] = array('#type' => 'actions', '#tree' => FALSE);
     $form['actions']['submit'] = array(
       '#type' => 'submit',
@@ -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);
@@ -472,14 +472,14 @@ function taxonomy_overview_terms_submit($form, &$form_state) {
   // Build a list of all terms that need to be updated on previous pages.
   $weight = 0;
   $term = (array) $tree[0];
-  while ($term['tid'] != $form['#first_tid']) {
-    if ($term['parents'][0] == 0 && $term['weight'] != $weight) {
+  while ($term['tid'] !== $form['#first_tid']) {
+    if ($term['parents'][0] === 0 && $term['weight'] !== $weight) {
       $term['parent'] = $term['parents'][0];
       $term['weight'] = $weight;
       $changed_terms[$term['tid']] = $term;
     }
     $weight++;
-    $hierarchy = $term['parents'][0] != 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy;
+    $hierarchy = $term['parents'][0] !== 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy;
     $term = (array) $tree[$weight];
   }
 
@@ -489,24 +489,24 @@ 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;
       }
       // Terms not at the root level can safely start from 0 because they're all on this page.
       elseif ($values['parent'] > 0) {
         $level_weights[$values['parent']] = isset($level_weights[$values['parent']]) ? $level_weights[$values['parent']] + 1 : 0;
-        if ($level_weights[$values['parent']] != $term['weight']) {
+        if ($level_weights[$values['parent']] !== $term['weight']) {
           $term['weight'] = $level_weights[$values['parent']];
           $changed_terms[$term['tid']] = $term;
         }
       }
       // Update any changed parents.
-      if ($values['parent'] != $term['parent']) {
+      if ($values['parent'] !== $term['parent']) {
         $term['parent'] = $values['parent'];
         $changed_terms[$term['tid']] = $term;
       }
-      $hierarchy = $term['parent'] != 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy;
+      $hierarchy = $term['parent'] !== 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy;
       $weight++;
     }
   }
@@ -514,12 +514,12 @@ 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;
     }
-    $hierarchy = $term['parents'][0] != 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy;
+    $hierarchy = $term['parents'][0] !== 0 ? TAXONOMY_HIERARCHY_SINGLE : $hierarchy;
   }
 
   // Save all updated terms.
@@ -539,7 +539,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) {
   }
 
   // Update the vocabulary hierarchy to flat or single hierarchy.
-  if ($vocabulary->hierarchy != $hierarchy) {
+  if ($vocabulary->hierarchy !== $hierarchy) {
     $vocabulary->hierarchy = $hierarchy;
     taxonomy_vocabulary_save($vocabulary);
   }
@@ -574,7 +574,7 @@ function theme_taxonomy_overview_terms($variables) {
   }
   drupal_add_tabledrag('taxonomy', 'order', 'sibling', 'term-weight');
 
-  $errors = form_get_errors() != FALSE ? form_get_errors() : array();
+  $errors = form_get_errors() !== FALSE ? form_get_errors() : array();
   $rows = array();
   foreach (element_children($form) as $key) {
     if (isset($form[$key]['#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';
       }
     }
@@ -713,7 +713,7 @@ function taxonomy_form_term($form, &$form_state, TaxonomyTerm $term = NULL, Taxo
     '#type' => 'fieldset',
     '#title' => t('Relations'),
     '#collapsible' => TRUE,
-    '#collapsed' => ($vocabulary->hierarchy != TAXONOMY_HIERARCHY_MULTIPLE),
+    '#collapsed' => ($vocabulary->hierarchy !== TAXONOMY_HIERARCHY_MULTIPLE),
     '#weight' => 10,
   );
 
@@ -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();
   }
@@ -841,8 +841,8 @@ 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;
+  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;
     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..40265ae 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']);
         }
@@ -151,7 +151,7 @@ class TaxonomyTermController extends EntityDatabaseStorageController {
     // Name matching is case insensitive, note that with some collations
     // LOWER() and drupal_strtolower() may return different results.
     foreach ($terms as $term) {
-      if (isset($conditions['name']) && drupal_strtolower($conditions['name'] != drupal_strtolower($term->name))) {
+      if (isset($conditions['name']) && drupal_strtolower($conditions['name'] !== drupal_strtolower($term->name))) {
         unset($terms[$term->tid]);
       }
     }
@@ -309,7 +309,7 @@ class TaxonomyVocabularyController extends EntityDatabaseStorageController {
     if (!$update) {
       field_attach_create_bundle('taxonomy_term', $entity->machine_name);
     }
-    elseif ($entity->original->machine_name != $entity->machine_name) {
+    elseif ($entity->original->machine_name !== $entity->machine_name) {
       field_attach_rename_bundle('taxonomy_term', $entity->original->machine_name, $entity->machine_name);
     }
   }
@@ -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..4f38c7a 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -465,13 +465,13 @@ function taxonomy_vocabulary_delete_multiple(array $vids) {
 function taxonomy_taxonomy_vocabulary_update(TaxonomyVocabulary $vocabulary) {
   // Reflect machine name changes in the definitions of existing 'taxonomy'
   // fields.
-  if (!empty($vocabulary->original->machine_name) && $vocabulary->original->machine_name != $vocabulary->machine_name) {
+  if (!empty($vocabulary->original->machine_name) && $vocabulary->original->machine_name !== $vocabulary->machine_name) {
     $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,11 +517,11 @@ 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;
     }
   }
-  if ($hierarchy != $vocabulary->hierarchy) {
+  if ($hierarchy !== $vocabulary->hierarchy) {
     $vocabulary->hierarchy = $hierarchy;
     taxonomy_vocabulary_save($vocabulary);
   }
@@ -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.
@@ -1144,7 +1144,7 @@ function taxonomy_field_validate($entity_type, $entity, $field, $instance, $lang
   // Build an array of existing term IDs so they can be loaded with
   // taxonomy_term_load_multiple();
   foreach ($items as $delta => $item) {
-    if (!empty($item['tid']) && $item['tid'] != 'autocreate') {
+    if (!empty($item['tid']) && $item['tid'] !== 'autocreate') {
       $tids[] = $item['tid'];
     }
   }
@@ -1155,12 +1155,12 @@ function taxonomy_field_validate($entity_type, $entity, $field, $instance, $lang
     // allowed values for this field.
     foreach ($items as $delta => $item) {
       $validate = TRUE;
-      if (!empty($item['tid']) && $item['tid'] != 'autocreate') {
+      if (!empty($item['tid']) && $item['tid'] !== 'autocreate') {
         $validate = FALSE;
         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']),
           );
@@ -1251,7 +1251,7 @@ function taxonomy_field_formatter_view($entity_type, $entity, $field, $instance,
 
     case 'taxonomy_term_reference_plain':
       foreach ($items as $delta => $item) {
-        $name = ($item['tid'] != 'autocreate' ? $item['taxonomy_term']->name : $item['name']);
+        $name = ($item['tid'] !== 'autocreate' ? $item['taxonomy_term']->name : $item['name']);
         $element[$delta] = array(
           '#markup' => check_plain($name),
         );
@@ -1262,9 +1262,9 @@ function taxonomy_field_formatter_view($entity_type, $entity, $field, $instance,
       foreach ($items as $delta => $item) {
         $entity->rss_elements[] = array(
           'key' => 'category',
-          'value' => $item['tid'] != 'autocreate' ? $item['taxonomy_term']->name : $item['name'],
+          'value' => $item['tid'] !== 'autocreate' ? $item['taxonomy_term']->name : $item['name'],
           'attributes' => array(
-            'domain' => $item['tid'] != 'autocreate' ? url('taxonomy/term/' . $item['tid'], array('absolute' => TRUE)) : '',
+            'domain' => $item['tid'] !== 'autocreate' ? url('taxonomy/term/' . $item['tid'], array('absolute' => TRUE)) : '',
           ),
         );
       }
@@ -1309,7 +1309,7 @@ function taxonomy_field_formatter_prepare_view($entity_type, $entities, $field,
   foreach ($entities as $id => $entity) {
     foreach ($items[$id] as $delta => $item) {
       // Force the array key to prevent duplicates.
-      if ($item['tid'] != 'autocreate') {
+      if ($item['tid'] !== 'autocreate') {
         $tids[$item['tid']] = $item['tid'];
       }
     }
@@ -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.pages.inc b/core/modules/taxonomy/taxonomy.pages.inc
index 7f4fa45..3bcbb04 100644
--- a/core/modules/taxonomy/taxonomy.pages.inc
+++ b/core/modules/taxonomy/taxonomy.pages.inc
@@ -124,7 +124,7 @@ function taxonomy_autocomplete($field_name, $tags_typed = '') {
   $tag_last = drupal_strtolower(array_pop($tags_typed));
 
   $matches = array();
-  if ($tag_last != '') {
+  if ($tag_last !== '') {
 
     // Part of the criteria for the query come from the field's own settings.
     $vids = array();
diff --git a/core/modules/taxonomy/taxonomy.test b/core/modules/taxonomy/taxonomy.test
index 65d6805..43aff37 100644
--- a/core/modules/taxonomy/taxonomy.test
+++ b/core/modules/taxonomy/taxonomy.test
@@ -18,7 +18,7 @@ class TaxonomyWebTestCase extends DrupalWebTestCase {
     parent::setUp($modules);
 
     // Create Basic page and Article node types.
-    if ($this->profile != 'standard') {
+    if ($this->profile !== 'standard') {
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
     }
   }
@@ -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.install b/core/modules/tracker/tracker.install
index 6d2d317..f4122f2 100644
--- a/core/modules/tracker/tracker.install
+++ b/core/modules/tracker/tracker.install
@@ -18,7 +18,7 @@ function tracker_uninstall() {
  */
 function tracker_enable() {
   $max_nid = db_query('SELECT MAX(nid) FROM {node}')->fetchField();
-  if ($max_nid != 0) {
+  if ($max_nid !== 0) {
     variable_set('tracker_index_nid', $max_nid);
     // To avoid timing out while attempting to do a complete indexing, we
     // simply call our cron job to remove stale records and begin the process.
diff --git a/core/modules/tracker/tracker.module b/core/modules/tracker/tracker.module
index a5887f2..25872e3 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');
 }
 
 /**
@@ -226,7 +226,7 @@ function tracker_node_predelete($node, $arg = 0) {
 function tracker_comment_update($comment) {
   // comment_save() calls hook_comment_publish() for all published comments
   // so we need to handle all other values here.
-  if ($comment->status != COMMENT_PUBLISHED) {
+  if ($comment->status !== COMMENT_PUBLISHED) {
     _tracker_remove($comment->nid, $comment->uid, $comment->changed);
   }
 }
@@ -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..b3d0ea7 100644
--- a/core/modules/translation/translation.module
+++ b/core/modules/translation/translation.module
@@ -84,7 +84,7 @@ function translation_menu() {
  * @see translation_menu()
  */
 function _translation_tab_access($node) {
-  if ($node->langcode != LANGUAGE_NOT_SPECIFIED && translation_supported_type($node->type) && node_access('view', $node)) {
+  if ($node->langcode !== LANGUAGE_NOT_SPECIFIED && translation_supported_type($node->type) && node_access('view', $node)) {
     return user_access('translate content');
   }
   return FALSE;
@@ -169,7 +169,7 @@ function translation_form_node_form_alter(&$form, &$form_state) {
       // language neutral option.
       unset($form['langcode']['#options'][LANGUAGE_NOT_SPECIFIED]);
       foreach (translation_node_get_translations($node->tnid) as $langcode => $translation) {
-        if ($translation->nid != $node->nid) {
+        if ($translation->nid !== $node->nid) {
           if ($translator_widget) {
             $group = $groups[(int)!isset($disabled_languages[$langcode])];
             unset($form['langcode']['#options'][$group][$langcode]);
@@ -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',
@@ -238,7 +238,7 @@ function translation_node_view($node, $view_mode) {
     foreach ($translations as $langcode => $translation) {
       // Do not show links to the same node, to unpublished translations or to
       // translations in disabled languages.
-      if ($translation->status && isset($languages[$langcode]) && $langcode != $node->langcode) {
+      if ($translation->status && isset($languages[$langcode]) && $langcode !== $node->langcode) {
         $language = $languages[$langcode];
         $key = "translation_$langcode";
 
@@ -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;
     }
@@ -394,7 +394,7 @@ function translation_node_validate($node, $form) {
   if (translation_supported_type($node->type) && (!empty($node->tnid) || !empty($form['#node']->translation_source->nid))) {
     $tnid = !empty($node->tnid) ? $node->tnid : $form['#node']->translation_source->nid;
     $translations = translation_node_get_translations($tnid);
-    if (isset($translations[$node->langcode]) && $translations[$node->langcode]->nid != $node->nid ) {
+    if (isset($translations[$node->langcode]) && $translations[$node->langcode]->nid !== $node->nid ) {
       form_set_error('langcode', t('There is already a translation in this language.'));
     }
   }
@@ -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..c1c8535 100644
--- a/core/modules/update/update.compare.inc
+++ b/core/modules/update/update.compare.inc
@@ -97,7 +97,7 @@ function _update_process_info_list(&$projects, $list, $project_type, $status) {
       }
     }
     // Otherwise, just add projects of the proper status to our list.
-    elseif ($file->status != $status) {
+    elseif ($file->status !== $status) {
       continue;
     }
 
@@ -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']) {
+      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..d499742 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,14 +116,14 @@ 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 {
     $requirement['title'] = t('Module and theme update status');
   }
   $status = $project['status'];
-  if ($status != UPDATE_CURRENT) {
+  if ($status !== UPDATE_CURRENT) {
     $requirement['reason'] = $status;
     $requirement['description'] = _update_message_text($type, $status, TRUE);
     $requirement['severity'] = REQUIREMENT_ERROR;
@@ -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..56ae9fd 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)');
     }
 
@@ -122,7 +122,7 @@ function update_manager_update_form($form, $form_state = array(), $context) {
 
     $recommended_release = $project['releases'][$project['recommended']];
     $recommended_version = $recommended_release['version'] . ' ' . l(t('(Release notes)'), $recommended_release['release_link'], array('attributes' => array('title' => t('Release notes for @project_title', array('@project_title' => $project['title'])))));
-    if ($recommended_release['version_major'] != $project['existing_major']) {
+    if ($recommended_release['version_major'] !== $project['existing_major']) {
       $recommended_version .= '<div title="Major upgrade warning" class="update-major-version-warning">' . t('This update is a major version update which means that it may not be backwards compatible with your currently running version.  It is recommended that you read the release notes and proceed at your own risk.') . '</div>';
     }
 
@@ -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..bb335d6 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 {
@@ -685,7 +685,7 @@ function update_verify_update_archive($project, $archive_file, $directory) {
     $info = drupal_parse_info_file($file->uri);
 
     // If the module or theme is incompatible with Drupal core, set an error.
-    if (empty($info['core']) || $info['core'] != DRUPAL_CORE_COMPATIBILITY) {
+    if (empty($info['core']) || $info['core'] !== DRUPAL_CORE_COMPATIBILITY) {
       $incompatible[] = !empty($info['name']) ? $info['name'] : t('Unknown');
     }
     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..0b4a196 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";
@@ -107,13 +107,13 @@ function theme_update_report($variables) {
     $security_class = array();
     $version_class = array();
     if (isset($project['recommended'])) {
-      if ($project['status'] != UPDATE_CURRENT || $project['existing_version'] !== $project['recommended']) {
+      if ($project['status'] !== UPDATE_CURRENT || $project['existing_version'] !== $project['recommended']) {
 
         // First, figure out what to recommend.
         // 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,8 +147,8 @@ 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'
-          && $project['status'] != UPDATE_CURRENT
+      if ($project['install_type'] === 'dev'
+          && $project['status'] !== UPDATE_CURRENT
           && isset($project['dev_version'])
           && $project['recommended'] !== $project['dev_version']) {
         $versions_inner .= theme('update_version', array('version' => $project['releases'][$project['dev_version']], 'tag' => t('Development version:'), 'class' => array('version-latest')));
diff --git a/core/modules/update/update.settings.inc b/core/modules/update/update.settings.inc
index 60ac3ca..eaf54c7 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 {
@@ -112,7 +112,7 @@ function update_settings_submit($form, $form_state) {
   // See if the update_check_disabled setting is being changed, and if so,
   // invalidate all cached update status data.
   $check_disabled = variable_get('update_check_disabled', FALSE);
-  if ($form_state['values']['update_check_disabled'] != $check_disabled) {
+  if ($form_state['values']['update_check_disabled'] !== $check_disabled) {
     _update_cache_clear();
   }
 
diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc
index f7d4552..b631cf4 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));
@@ -114,7 +114,7 @@ function user_filter_form_submit($form, &$form_state) {
     case t('Refine'):
       // Apply every filter that has a choice selected other than 'any'.
       foreach ($filters as $filter => $options) {
-        if (isset($form_state['values'][$filter]) && $form_state['values'][$filter] != '[any]') {
+        if (isset($form_state['values'][$filter]) && $form_state['values'][$filter] !== '[any]') {
           $_SESSION['user_overview_filter'][] = array($filter, $form_state['values'][$filter]);
         }
       }
@@ -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.'));
   }
 }
@@ -431,7 +431,7 @@ function user_admin_settings() {
     '#type' => 'fieldset',
     '#title' => t('Welcome (new user created by administrator)'),
     '#collapsible' => TRUE,
-    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) != USER_REGISTER_ADMINISTRATORS_ONLY),
+    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) !== USER_REGISTER_ADMINISTRATORS_ONLY),
     '#description' => t('Edit the welcome e-mail messages sent to new member accounts created by an administrator.') . ' ' . $email_token_help,
     '#group' => 'email',
   );
@@ -452,7 +452,7 @@ function user_admin_settings() {
     '#type' => 'fieldset',
     '#title' => t('Welcome (awaiting approval)'),
     '#collapsible' => TRUE,
-    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) != USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL),
+    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) !== USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL),
     '#description' => t('Edit the welcome e-mail messages sent to new members upon registering, when administrative approval is required.') . ' ' . $email_token_help,
     '#group' => 'email',
   );
@@ -473,7 +473,7 @@ function user_admin_settings() {
     '#type' => 'fieldset',
     '#title' => t('Welcome (no approval required)'),
     '#collapsible' => TRUE,
-    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) != USER_REGISTER_VISITORS),
+    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) !== USER_REGISTER_VISITORS),
     '#description' => t('Edit the welcome e-mail messages sent to new members upon registering, when no administrator approval is required.') . ' ' . $email_token_help,
     '#group' => 'email',
   );
@@ -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']) {
+      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.install b/core/modules/user/user.install
index 38d78e1..b9f4525 100644
--- a/core/modules/user/user.install
+++ b/core/modules/user/user.install
@@ -331,13 +331,13 @@ function user_install() {
   // Sanity check to ensure the anonymous and authenticated role IDs are the
   // same as the drupal defined constants. In certain situations, this will
   // not be true.
-  if ($rid_anonymous != DRUPAL_ANONYMOUS_RID) {
+  if ($rid_anonymous !== DRUPAL_ANONYMOUS_RID) {
     db_update('role')
       ->fields(array('rid' => DRUPAL_ANONYMOUS_RID))
       ->condition('rid', $rid_anonymous)
       ->execute();
   }
-  if ($rid_authenticated != DRUPAL_AUTHENTICATED_RID) {
+  if ($rid_authenticated !== DRUPAL_AUTHENTICATED_RID) {
     db_update('role')
       ->fields(array('rid' => DRUPAL_AUTHENTICATED_RID))
       ->condition('rid', $rid_authenticated)
diff --git a/core/modules/user/user.js b/core/modules/user/user.js
index 74905f3..381d854 100644
--- a/core/modules/user/user.js
+++ b/core/modules/user/user.js
@@ -34,12 +34,12 @@ Drupal.behaviors.password = {
         var result = Drupal.evaluatePasswordStrength(passwordInput.val(), settings.password);
 
         // Update the suggestions for how to improve the password.
-        if (passwordDescription.html() != result.message) {
+        if (passwordDescription.html() !== result.message) {
           passwordDescription.html(result.message);
         }
 
         // 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 865f17b..cbdf6fb 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -431,7 +431,7 @@ function user_save($account, $edit = array()) {
 
     if (is_object($account) && !$account->is_new) {
       // Process picture uploads.
-      if (!empty($account->picture->fid) && (!isset($account->original->picture->fid) || $account->picture->fid != $account->original->picture->fid)) {
+      if (!empty($account->picture->fid) && (!isset($account->original->picture->fid) || $account->picture->fid !== $account->original->picture->fid)) {
         $picture = $account->picture;
         // If the picture is a temporary file move it to its final location and
         // make it permanent.
@@ -473,7 +473,7 @@ function user_save($account, $edit = array()) {
       }
 
       // Reload user roles if provided.
-      if ($account->roles != $account->original->roles) {
+      if ($account->roles !== $account->original->roles) {
         db_delete('users_roles')
           ->condition('uid', $account->uid)
           ->execute();
@@ -491,15 +491,15 @@ 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);
       }
 
       // If the password changed, delete all open sessions and recreate
       // the current one.
-      if ($account->pass != $account->original->pass) {
+      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();
         }
       }
@@ -508,9 +508,9 @@ function user_save($account, $edit = array()) {
       field_attach_update('user', $account);
 
       // Send emails after we have the new user object.
-      if ($account->status != $account->original->status) {
+      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;
   }
 
@@ -818,7 +818,7 @@ function user_file_download($uri) {
 function user_file_move($file, $source) {
   // If a user's picture is replaced with a new one, update the record in
   // the users table.
-  if (isset($file->fid) && isset($source->fid) && $file->fid != $source->fid) {
+  if (isset($file->fid) && isset($source->fid) && $file->fid !== $source->fid) {
     db_update('users')
       ->fields(array(
         'picture' => $file->fid,
@@ -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,
   );
 
@@ -965,7 +965,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
@@ -977,7 +977,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,
@@ -1007,7 +1007,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',
@@ -1101,7 +1101,7 @@ function user_validate_current_pass(&$form, &$form_state) {
     // This validation only works for required textfields (like mail) or
     // form values like password_confirm that have their own validation
     // that prevent them from being empty if they are changed.
-    if ((strlen(trim($form_state['values'][$key])) > 0) && ($form_state['values'][$key] != $account->$key)) {
+    if ((strlen(trim($form_state['values'][$key])) > 0) && ($form_state['values'][$key] !== $account->$key)) {
       require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'core/includes/password.inc');
       $current_pass_failed = empty($form_state['values']['current_pass']) || !user_check_password($form_state['values']['current_pass'], $account);
       if ($current_pass_failed) {
@@ -1286,7 +1286,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');
@@ -1333,7 +1333,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';
@@ -1580,7 +1580,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')) {
@@ -1598,7 +1598,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;
 }
 
 /**
@@ -1608,7 +1608,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;
 }
 
 /**
@@ -1825,7 +1825,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');
@@ -1852,11 +1852,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');
     }
@@ -1871,13 +1871,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;
   }
 }
@@ -1887,7 +1887,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;
   }
 }
@@ -1944,7 +1944,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;
 }
 
 /**
@@ -2138,7 +2138,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 {
@@ -2356,7 +2356,7 @@ function user_cancel($edit, $uid, $method) {
   // When the 'user_cancel_delete' method is used, user_delete() is called,
   // which invokes hook_user_predelete() and hook_user_delete(). Modules
   // should use those hooks to respond to the account deletion.
-  if ($method != 'user_cancel_delete') {
+  if ($method !== 'user_cancel_delete') {
     // Allow modules to add further sets to this batch.
     module_invoke_all('user_cancel', $edit, $account, $method);
   }
@@ -2411,7 +2411,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();
   }
@@ -2950,7 +2950,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;
   }
 
@@ -3121,7 +3121,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(
@@ -3146,7 +3146,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));
     }
   }
@@ -3159,7 +3159,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;
@@ -3226,7 +3226,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.
@@ -3286,7 +3286,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;
@@ -3362,7 +3362,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);
@@ -3373,7 +3373,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);
     }
@@ -3477,13 +3477,13 @@ function user_preferred_language($account, $default = NULL) {
  */
 function _user_mail_notify($op, $account, $language = NULL) {
   // By default, we always notify except for canceled and blocked.
-  $default_notify = ($op != 'status_canceled' && $op != 'status_blocked');
+  $default_notify = ($op !== 'status_canceled' && $op !== 'status_blocked');
   $notify = variable_get('user_mail_' . $op . '_notify', $default_notify);
   if ($notify) {
     $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);
@@ -3571,7 +3571,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']);
   }
 }
@@ -3622,7 +3622,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.'),
@@ -3848,7 +3848,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;
@@ -3903,7 +3903,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..442a133 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();
@@ -327,7 +327,7 @@ function user_cancel_confirm_form($form, &$form_state, $account) {
   // Allow user administrators to skip the account cancellation confirmation
   // mail (by default), as long as they do not attempt to cancel their own
   // account.
-  $override_access = $admin_access && ($account->uid != $user->uid);
+  $override_access = $admin_access && ($account->uid !== $user->uid);
   $form['user_cancel_confirm'] = array(
     '#type' => 'checkbox',
     '#title' => t('Require e-mail confirmation to cancel account.'),
@@ -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']);
@@ -392,7 +392,7 @@ function user_cancel_confirm_form_submit($form, &$form_state) {
   // Cancel account immediately, if the current user has administrative
   // privileges, no confirmation mail shall be sent, and the user does not
   // attempt to cancel the own account.
-  if (user_access('administer users') && empty($form_state['values']['user_cancel_confirm']) && $account->uid != $user->uid) {
+  if (user_access('administer users') && empty($form_state['values']['user_cancel_confirm']) && $account->uid !== $user->uid) {
     user_cancel($form_state['values'], $account->uid, $form_state['values']['user_cancel_method']);
 
     $form_state['redirect'] = 'admin/people';
@@ -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 06fbc95..1ae9fe5 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.'));
@@ -882,7 +882,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);
@@ -2009,7 +2009,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..682a9e0 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]);
@@ -511,7 +511,7 @@ function simpletest_script_reporter_write_xml_results() {
 
   foreach ($results as $result) {
     if (isset($results_map[$result->status])) {
-      if ($result->test_class != $test_class) {
+      if ($result->test_class !== $test_class) {
         // We've moved onto a new class, so write the last classes results to a file:
         if (isset($xml_files[$test_class])) {
           file_put_contents($args['xml'] . '/' . $test_class . '.xml', $xml_files[$test_class]['doc']->saveXML());
@@ -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);
@@ -593,7 +593,7 @@ function simpletest_script_reporter_display_results() {
     $test_class = '';
     foreach ($results as $result) {
       if (isset($results_map[$result->status])) {
-        if ($result->test_class != $test_class) {
+        if ($result->test_class !== $test_class) {
           // Display test class every time results are for new test class.
           echo "\n\n---- $result->test_class ----\n\n\n";
           $test_class = $result->test_class;
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/comment-wrapper.tpl.php b/core/themes/bartik/templates/comment-wrapper.tpl.php
index 864dc41..3a8accb 100644
--- a/core/themes/bartik/templates/comment-wrapper.tpl.php
+++ b/core/themes/bartik/templates/comment-wrapper.tpl.php
@@ -36,7 +36,7 @@
  */
 ?>
 <div id="comments" class="<?php print $classes; ?>"<?php print $attributes; ?>>
-  <?php if ($content['comments'] && $node->type != 'forum'): ?>
+  <?php if ($content['comments'] && $node->type !== 'forum'): ?>
     <?php print render($title_prefix); ?>
     <h2 class="title"><?php print t('Comments'); ?></h2>
     <?php print render($title_suffix); ?>
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..afc2620 100644
--- a/core/update.php
+++ b/core/update.php
@@ -202,7 +202,7 @@ function update_results_page() {
   if (!empty($_SESSION['update_results'])) {
     $all_messages = '';
     foreach ($_SESSION['update_results'] as $module => $updates) {
-      if ($module != '#abort') {
+      if ($module !== '#abort') {
         $module_has_message = FALSE;
         $query_messages = '';
         foreach ($updates as $number => $queries) {
@@ -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.
