1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/android/testshell/testshell_tab.h" 6 7 #include "base/android/jni_string.h" 8 #include "base/logging.h" 9 #include "chrome/browser/android/chrome_web_contents_delegate_android.h" 10 #include "chrome/browser/ui/android/window_android_helper.h" 11 #include "chrome/common/net/url_fixer_upper.h" 12 #include "content/public/browser/android/content_view_core.h" 13 #include "content/public/browser/web_contents.h" 14 #include "jni/TestShellTab_jni.h" 15 #include "ui/android/window_android.h" 16 #include "url/gurl.h" 17 18 using base::android::ConvertJavaStringToUTF8; 19 using base::android::ConvertUTF8ToJavaString; 20 using base::android::ScopedJavaLocalRef; 21 using chrome::android::ChromeWebContentsDelegateAndroid; 22 using content::WebContents; 23 using ui::WindowAndroid; 24 25 TestShellTab::TestShellTab(JNIEnv* env, 26 jobject obj, 27 WebContents* web_contents, 28 WindowAndroid* window_android) 29 : TabAndroid(env, obj), 30 web_contents_(web_contents) { 31 InitTabHelpers(web_contents); 32 WindowAndroidHelper::FromWebContents(web_contents)-> 33 SetWindowAndroid(window_android); 34 } 35 36 TestShellTab::~TestShellTab() { 37 } 38 39 void TestShellTab::Destroy(JNIEnv* env, jobject obj) { 40 delete this; 41 } 42 43 WebContents* TestShellTab::GetWebContents() { 44 return web_contents_.get(); 45 } 46 47 browser_sync::SyncedTabDelegate* TestShellTab::GetSyncedTabDelegate() { 48 NOTIMPLEMENTED(); 49 return NULL; 50 } 51 52 void TestShellTab::OnReceivedHttpAuthRequest(jobject auth_handler, 53 const string16& host, 54 const string16& realm) { 55 NOTIMPLEMENTED(); 56 } 57 58 void TestShellTab::ShowContextMenu( 59 const content::ContextMenuParams& params) { 60 NOTIMPLEMENTED(); 61 } 62 63 void TestShellTab::ShowCustomContextMenu( 64 const content::ContextMenuParams& params, 65 const base::Callback<void(int)>& callback) { 66 NOTIMPLEMENTED(); 67 } 68 69 void TestShellTab::AddShortcutToBookmark( 70 const GURL& url, const string16& title, const SkBitmap& skbitmap, 71 int r_value, int g_value, int b_value) { 72 NOTIMPLEMENTED(); 73 } 74 75 void TestShellTab::EditBookmark(int64 node_id, bool is_folder) { 76 NOTIMPLEMENTED(); 77 } 78 79 void TestShellTab::ShowSyncSettings() { 80 NOTIMPLEMENTED(); 81 } 82 83 void TestShellTab::ShowTermsOfService() { 84 NOTIMPLEMENTED(); 85 } 86 87 bool TestShellTab::ShouldWelcomePageLinkToTermsOfService() { 88 NOTIMPLEMENTED(); 89 return false; 90 } 91 92 void TestShellTab::OnNewTabPageReady() { 93 NOTIMPLEMENTED(); 94 } 95 96 void TestShellTab::RunExternalProtocolDialog(const GURL& url) { 97 NOTIMPLEMENTED(); 98 } 99 100 bool TestShellTab::RegisterTestShellTab(JNIEnv* env) { 101 return RegisterNativesImpl(env); 102 } 103 104 void TestShellTab::InitWebContentsDelegate( 105 JNIEnv* env, 106 jobject obj, 107 jobject web_contents_delegate) { 108 web_contents_delegate_.reset( 109 new ChromeWebContentsDelegateAndroid(env, web_contents_delegate)); 110 web_contents_->SetDelegate(web_contents_delegate_.get()); 111 } 112 113 ScopedJavaLocalRef<jstring> TestShellTab::FixupUrl(JNIEnv* env, 114 jobject obj, 115 jstring url) { 116 GURL fixed_url(URLFixerUpper::FixupURL(ConvertJavaStringToUTF8(env, url), 117 std::string())); 118 119 std::string fixed_spec; 120 if (fixed_url.is_valid()) 121 fixed_spec = fixed_url.spec(); 122 123 return ConvertUTF8ToJavaString(env, fixed_spec); 124 } 125 126 static jint Init(JNIEnv* env, 127 jobject obj, 128 jint web_contents_ptr, 129 jint window_android_ptr) { 130 TestShellTab* tab = new TestShellTab( 131 env, 132 obj, 133 reinterpret_cast<WebContents*>(web_contents_ptr), 134 reinterpret_cast<WindowAndroid*>(window_android_ptr)); 135 return reinterpret_cast<jint>(tab); 136 } 137 138 int TestShellTab::GetSyncId() const { 139 NOTIMPLEMENTED(); 140 return 0; 141 } 142 143 void TestShellTab::SetSyncId(int sync_id) { NOTIMPLEMENTED(); } 144