Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / android / tab_android.cc
index ff3bc6e..f49471e 100644 (file)
@@ -38,7 +38,7 @@
 #include "chrome/browser/ui/search/search_tab_helper.h"
 #include "chrome/browser/ui/tab_contents/core_tab_helper.h"
 #include "chrome/browser/ui/tab_helpers.h"
-#include "chrome/browser/ui/toolbar/toolbar_model_impl.h"
+#include "chrome/common/instant_types.h"
 #include "chrome/common/url_constants.h"
 #include "components/google/core/browser/google_url_tracker.h"
 #include "components/google/core/browser/google_util.h"
@@ -235,11 +235,6 @@ void TabAndroid::HandlePopupNavigation(chrome::NavigateParams* params) {
   }
 }
 
-bool TabAndroid::ShouldWelcomePageLinkToTermsOfService() {
-  NOTIMPLEMENTED();
-  return false;
-}
-
 bool TabAndroid::HasPrerenderedUrl(GURL gurl) {
   prerender::PrerenderManager* prerender_manager = GetPrerenderManager();
   if (!prerender_manager)
@@ -373,9 +368,6 @@ void TabAndroid::Observe(int type,
       }
       break;
     }
-    case chrome::NOTIFICATION_FAVICON_UPDATED:
-      Java_Tab_onFaviconUpdated(env, weak_java_tab_.get(env).obj());
-      break;
     case content::NOTIFICATION_NAV_ENTRY_CHANGED:
       Java_Tab_onNavEntryChanged(env, weak_java_tab_.get(env).obj());
       break;
@@ -385,6 +377,16 @@ void TabAndroid::Observe(int type,
   }
 }
 
+void TabAndroid::OnFaviconAvailable(const gfx::Image& image) {
+  SkBitmap favicon = image.AsImageSkia().GetRepresentation(1.0f).sk_bitmap();
+  if (favicon.empty())
+    return;
+
+  JNIEnv *env = base::android::AttachCurrentThread();
+  Java_Tab_onFaviconAvailable(env, weak_java_tab_.get(env).obj(),
+                              gfx::ConvertToJavaBitmap(&favicon).obj());
+}
+
 void TabAndroid::Destroy(JNIEnv* env, jobject obj) {
   delete this;
 }
@@ -426,14 +428,16 @@ void TabAndroid::InitWebContents(JNIEnv* env,
       content::Source<content::WebContents>(web_contents()));
   notification_registrar_.Add(
       this,
-      chrome::NOTIFICATION_FAVICON_UPDATED,
-      content::Source<content::WebContents>(web_contents()));
-  notification_registrar_.Add(
-      this,
       content::NOTIFICATION_NAV_ENTRY_CHANGED,
       content::Source<content::NavigationController>(
            &web_contents()->GetController()));
 
+  FaviconTabHelper* favicon_tab_helper =
+      FaviconTabHelper::FromWebContents(web_contents_.get());
+
+  if (favicon_tab_helper)
+    favicon_tab_helper->AddObserver(this);
+
   synced_tab_delegate_->SetWebContents(web_contents());
 
   // Verify that the WebContents this tab represents matches the expected
@@ -457,14 +461,16 @@ void TabAndroid::DestroyWebContents(JNIEnv* env,
       content::Source<content::WebContents>(web_contents()));
   notification_registrar_.Remove(
       this,
-      chrome::NOTIFICATION_FAVICON_UPDATED,
-      content::Source<content::WebContents>(web_contents()));
-  notification_registrar_.Remove(
-      this,
       content::NOTIFICATION_NAV_ENTRY_CHANGED,
       content::Source<content::NavigationController>(
            &web_contents()->GetController()));
 
+  FaviconTabHelper* favicon_tab_helper =
+      FaviconTabHelper::FromWebContents(web_contents_.get());
+
+  if (favicon_tab_helper)
+    favicon_tab_helper->RemoveObserver(this);
+
   InstantService* instant_service =
       InstantServiceFactory::GetForProfile(GetProfile());
   if (instant_service)
@@ -526,7 +532,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl(JNIEnv* env,
           chrome::ExtractSearchTermsFromURL(GetProfile(), gurl);
       if (!search_terms.empty() &&
           prerenderer->CanCommitQuery(web_contents_.get(), search_terms)) {
-        prerenderer->Commit(search_terms);
+        EmbeddedSearchRequestParams request_params(gurl);
+        prerenderer->Commit(search_terms, request_params);
 
         if (prerenderer->UsePrerenderedPage(gurl, &params))
           return FULL_PRERENDERED_PAGE_LOAD;
@@ -592,7 +599,8 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl(JNIEnv* env,
         SearchTabHelper::FromWebContents(web_contents_.get());
     if (!search_terms.empty() && search_tab_helper &&
         search_tab_helper->SupportsInstant()) {
-      search_tab_helper->Submit(search_terms);
+      EmbeddedSearchRequestParams request_params(gurl);
+      search_tab_helper->Submit(search_terms, request_params);
       return DEFAULT_PAGE_LOAD;
     }
     load_params.is_renderer_initiated = is_renderer_initiated;
@@ -601,11 +609,6 @@ TabAndroid::TabLoadStatus TabAndroid::LoadUrl(JNIEnv* env,
   return DEFAULT_PAGE_LOAD;
 }
 
-ToolbarModel::SecurityLevel TabAndroid::GetSecurityLevel(JNIEnv* env,
-                                                         jobject obj) {
-  return ToolbarModelImpl::GetSecurityLevelForWebContents(web_contents());
-}
-
 void TabAndroid::SetActiveNavigationEntryTitleForUrl(JNIEnv* env,
                                                      jobject obj,
                                                      jstring jurl,
@@ -640,7 +643,8 @@ bool TabAndroid::Print(JNIEnv* env, jobject obj) {
   return true;
 }
 
-ScopedJavaLocalRef<jobject> TabAndroid::GetFavicon(JNIEnv* env, jobject obj) {
+ScopedJavaLocalRef<jobject> TabAndroid::GetDefaultFavicon(JNIEnv* env,
+                                                          jobject obj) {
   ScopedJavaLocalRef<jobject> bitmap;
   FaviconTabHelper* favicon_tab_helper =
       FaviconTabHelper::FromWebContents(web_contents_.get());
@@ -648,19 +652,8 @@ ScopedJavaLocalRef<jobject> TabAndroid::GetFavicon(JNIEnv* env, jobject obj) {
   if (!favicon_tab_helper)
     return bitmap;
 
-  // If the favicon isn't valid, it will return a default bitmap.
-
-  SkBitmap favicon =
-      favicon_tab_helper->GetFavicon()
-          .AsImageSkia()
-          .GetRepresentation(
-               ResourceBundle::GetSharedInstance().GetMaxScaleFactor())
-          .sk_bitmap();
-
-  if (favicon.empty()) {
-    favicon = favicon_tab_helper->GetFavicon().AsBitmap();
-  }
-
+  // Always return the default favicon in Android.
+  SkBitmap favicon = favicon_tab_helper->GetFavicon().AsBitmap();
   if (!favicon.empty()) {
     gfx::DeviceDisplayInfo device_info;
     const float device_scale_factor = device_info.GetDIPScale();