Index: chrome/browser/android/tab_android.cc |
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc |
index baa0a000cb2aeef6856c7b08386b17534184d8da..8086a6be6954e8f7e9f77cc35732113ad85ebc5a 100644 |
--- a/chrome/browser/android/tab_android.cc |
+++ b/chrome/browser/android/tab_android.cc |
@@ -23,6 +23,7 @@ |
#include "chrome/browser/search/search.h" |
#include "chrome/browser/sessions/session_tab_helper.h" |
#include "chrome/browser/sync/glue/synced_tab_delegate_android.h" |
+#include "chrome/browser/tab_contents/tab_util.h" |
#include "chrome/browser/ui/android/content_settings/popup_blocked_infobar_delegate.h" |
#include "chrome/browser/ui/android/context_menu_helper.h" |
#include "chrome/browser/ui/android/infobars/infobar_container_android.h" |
@@ -48,6 +49,67 @@ |
#include "jni/Tab_jni.h" |
#include "third_party/WebKit/public/platform/WebReferrerPolicy.h" |
+using content::GlobalRequestID; |
+using content::NavigationController; |
+using content::WebContents; |
+ |
+namespace { |
+ |
+WebContents* CreateTargetContents(const chrome::NavigateParams& params, |
+ const GURL& url) { |
+ WebContents::CreateParams create_params( |
+ params.initiating_profile, |
+ tab_util::GetSiteInstanceForNewTab(params.initiating_profile, url)); |
+ if (params.source_contents) { |
+ create_params.initial_size = |
+ params.source_contents->GetContainerBounds().size(); |
+ if (params.should_set_opener) |
+ create_params.opener = params.source_contents; |
+ } |
+ if (params.disposition == NEW_BACKGROUND_TAB) |
+ create_params.initially_hidden = true; |
+ |
+ WebContents* target_contents = WebContents::Create(create_params); |
+ |
+ // New tabs can have WebUI URLs that will make calls back to arbitrary |
+ // tab helpers, so the entire set of tab helpers needs to be set up |
+ // immediately. |
+ TabAndroid::AttachTabHelpers(target_contents); |
+ return target_contents; |
+} |
+ |
+void LoadURLInContents(content::WebContents* target_contents, |
David Trainor- moved to gerrit
2014/07/07 18:19:53
This looks more of a convert params. Almost like
Jitu( very slow this week)
2014/07/10 14:00:18
@David,
When i have uploaded the first patch i ha
|
+ const GURL& url, |
+ chrome::NavigateParams* params) { |
+ NavigationController::LoadURLParams load_url_params(url); |
+ load_url_params.referrer = params->referrer; |
+ load_url_params.frame_tree_node_id = params->frame_tree_node_id; |
+ load_url_params.redirect_chain = params->redirect_chain; |
+ load_url_params.transition_type = params->transition; |
+ load_url_params.extra_headers = params->extra_headers; |
+ load_url_params.should_replace_current_entry = |
+ params->should_replace_current_entry; |
+ |
+ if (params->transferred_global_request_id != GlobalRequestID()) { |
+ load_url_params.is_renderer_initiated = params->is_renderer_initiated; |
+ load_url_params.transferred_global_request_id = |
+ params->transferred_global_request_id; |
+ } else if (params->is_renderer_initiated) { |
+ load_url_params.is_renderer_initiated = true; |
+ } |
+ |
+ // Only allows the browser-initiated navigation to use POST. |
+ if (params->uses_post && !params->is_renderer_initiated) { |
+ load_url_params.load_type = |
+ NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; |
+ load_url_params.browser_initiated_post_data = |
+ params->browser_initiated_post_data; |
+ } |
+ target_contents->GetController().LoadURLWithParams(load_url_params); |
+} |
+ |
+} // namespace |
+ |
TabAndroid* TabAndroid::FromWebContents(content::WebContents* web_contents) { |
CoreTabHelper* core_tab_helper = CoreTabHelper::FromWebContents(web_contents); |
if (!core_tab_helper) |
@@ -170,7 +232,20 @@ void TabAndroid::SetSyncId(int sync_id) { |
} |
void TabAndroid::HandlePopupNavigation(chrome::NavigateParams* params) { |
David Trainor- moved to gerrit
2014/07/07 18:19:53
IIRC when this was originally written we didn't ha
Jitu( very slow this week)
2014/07/10 14:00:18
Yes i have tested it is working fine...
I think t
|
- NOTIMPLEMENTED(); |
+ if (!params->url.is_empty()) { |
+ bool was_blocked = false; |
+ GURL url = params->url; |
+ params->target_contents = CreateTargetContents(*params, url); |
+ LoadURLInContents(params->target_contents, url, params); |
+ web_contents_delegate_->AddNewContents(params->source_contents, |
+ params->target_contents, |
+ params->disposition, |
+ params->window_bounds, |
+ params->user_gesture, |
+ &was_blocked); |
+ if (was_blocked) |
+ params->target_contents = NULL; |
+ } |
} |
void TabAndroid::OnReceivedHttpAuthRequest(jobject auth_handler, |