--- a/ui/events/x/touch_factory_x11.cc
+++ b/ui/events/x/touch_factory_x11.cc
@@ -145,6 +145,27 @@ void TouchFactory::UpdateDeviceList(Disp
 #endif
       pointer_device_lookup_[devinfo->deviceid] = true;
     }
+
+#if defined(USE_XI2_MT)
+    if (devinfo->use == XIFloatingSlave || devinfo->use == XISlavePointer) {
+      for (int k = 0; k < devinfo->num_classes; ++k) {
+        XIAnyClassInfo* xiclassinfo = devinfo->classes[k];
+        if (xiclassinfo->type == XITouchClass) {
+          XITouchClassInfo* tci =
+              reinterpret_cast<XITouchClassInfo*>(xiclassinfo);
+          // Only care direct touch device (such as touch screen) right now
+          if (tci->mode == XIDirectTouch) {
+            CacheTouchscreenIds(display, devinfo->deviceid);
+            touch_device_lookup_[devinfo->deviceid] = true;
+            touch_device_list_[devinfo->deviceid] = true;
+            touch_device_available_ = true;
+            if (tci->num_touches > 0 && tci->num_touches > max_touch_points_)
+              max_touch_points_ = tci->num_touches;
+          }
+        }
+      }
+    }
+#endif
   }
 }
 
