diff --git a/src/com/android/browser/PreloadRequestReceiver.java b/src/com/android/browser/PreloadRequestReceiver.java
index 5176176..ff3c8e3 100644
--- a/src/com/android/browser/PreloadRequestReceiver.java
+++ b/src/com/android/browser/PreloadRequestReceiver.java
@@ -39,6 +39,7 @@
     private static final String ACTION_PRELOAD = "android.intent.action.PRELOAD";
     static final String EXTRA_PRELOAD_ID = "preload_id";
     static final String EXTRA_PRELOAD_DISCARD = "preload_discard";
+    static final String EXTRA_SEARCHBOX_CANCEL = "searchbox_cancel";
     static final String EXTRA_SEARCHBOX_SETQUERY = "searchbox_query";
 
     @Override
@@ -61,6 +62,9 @@
         if (i.getBooleanExtra(EXTRA_PRELOAD_DISCARD, false)) {
             if (LOGD_ENABLED) Log.d(LOGTAG, "Got " + id + " preload discard request");
             Preloader.getInstance().discardPreload(id);
+        } else if (i.getBooleanExtra(EXTRA_SEARCHBOX_CANCEL, false)) {
+            if (LOGD_ENABLED) Log.d(LOGTAG, "Got " + id + " searchbox cancel request");
+            Preloader.getInstance().cancelSearchBoxPreload(id);
         } else {
             if (LOGD_ENABLED) Log.d(LOGTAG, "Got " + id + " preload request for " + url);
             if (url != null && url.startsWith("http")) {
diff --git a/src/com/android/browser/PreloadedTabControl.java b/src/com/android/browser/PreloadedTabControl.java
index 824c00b..ed066f2 100644
--- a/src/com/android/browser/PreloadedTabControl.java
+++ b/src/com/android/browser/PreloadedTabControl.java
@@ -89,6 +89,19 @@
         return true;
     }
 
+    public void searchBoxCancel() {
+        SearchBox sb = mTab.getWebView().getSearchBox();
+        if (sb != null) {
+            mLastQuery = null;
+            sb.oncancel(new SearchBox.SearchBoxListener(){
+                @Override
+                public void onCancelComplete(boolean called) {
+                    if (LOGD_ENABLED) Log.d(LOGTAG, "Query cancelled: " + called);
+                }
+            });
+        }
+    }
+
     public void loadUrlIfChanged(String url, Map<String, String> headers) {
         String currentUrl = mTab.getUrl();
         if (!TextUtils.isEmpty(currentUrl)) {
diff --git a/src/com/android/browser/Preloader.java b/src/com/android/browser/Preloader.java
index 3d30c96..3273a8c 100644
--- a/src/com/android/browser/Preloader.java
+++ b/src/com/android/browser/Preloader.java
@@ -106,6 +106,15 @@
         }
     }
 
+    public void cancelSearchBoxPreload(String id) {
+        PreloaderSession s = getSession(id);
+        if (s != null) {
+            s.touch(); // reset timer
+            PreloadedTabControl tab = s.getTabControl();
+            tab.searchBoxCancel();
+        }
+    }
+
     public void discardPreload(String id) {
         PreloaderSession s = takeSession(id);
         if (s != null) {
