| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/cocoa/web_intent_picker_cocoa.h" | 5 #include "chrome/browser/ui/cocoa/web_intent_picker_cocoa.h" |
| 6 | 6 |
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 // We don't handle individual icon changes - just redo the whole model. | 145 // We don't handle individual icon changes - just redo the whole model. |
| 146 PerformLayout(); | 146 PerformLayout(); |
| 147 } | 147 } |
| 148 | 148 |
| 149 void WebIntentPickerCocoa::OnExtensionIconChanged( | 149 void WebIntentPickerCocoa::OnExtensionIconChanged( |
| 150 WebIntentPickerModel* model, | 150 WebIntentPickerModel* model, |
| 151 const string16& extension_id) { | 151 const string16& extension_id) { |
| 152 // TODO(binji): implement. | 152 // TODO(binji): implement. |
| 153 } | 153 } |
| 154 | 154 |
| 155 void WebIntentPickerCocoa::OnInlineDisposition(WebIntentPickerModel* model) { | 155 void WebIntentPickerCocoa::OnInlineDisposition(WebIntentPickerModel* model, |
| 156 const GURL& url) { |
| 156 DCHECK(browser_); | 157 DCHECK(browser_); |
| 157 const WebIntentPickerModel::InstalledService& installed_service = | |
| 158 model->GetInstalledServiceAt(model->inline_disposition_index()); | |
| 159 | |
| 160 content::WebContents* web_contents = content::WebContents::Create( | 158 content::WebContents* web_contents = content::WebContents::Create( |
| 161 browser_->profile(), NULL, MSG_ROUTING_NONE, NULL, NULL); | 159 browser_->profile(), NULL, MSG_ROUTING_NONE, NULL, NULL); |
| 162 inline_disposition_tab_contents_.reset(new TabContentsWrapper(web_contents)); | 160 inline_disposition_tab_contents_.reset(new TabContentsWrapper(web_contents)); |
| 163 inline_disposition_delegate_.reset(new WebIntentInlineDispositionDelegate); | 161 inline_disposition_delegate_.reset(new WebIntentInlineDispositionDelegate); |
| 164 web_contents->SetDelegate(inline_disposition_delegate_.get()); | 162 web_contents->SetDelegate(inline_disposition_delegate_.get()); |
| 165 | 163 |
| 166 // Must call this immediately after WebContents creation to avoid race | 164 // Must call this immediately after WebContents creation to avoid race |
| 167 // with load. | 165 // with load. |
| 168 delegate_->OnInlineDispositionWebContentsCreated(web_contents); | 166 delegate_->OnInlineDispositionWebContentsCreated(web_contents); |
| 169 | 167 |
| 170 inline_disposition_tab_contents_->web_contents()->GetController().LoadURL( | 168 inline_disposition_tab_contents_->web_contents()->GetController().LoadURL( |
| 171 installed_service.url, | 169 url, |
| 172 content::Referrer(), | 170 content::Referrer(), |
| 173 content::PAGE_TRANSITION_START_PAGE, | 171 content::PAGE_TRANSITION_START_PAGE, |
| 174 std::string()); | 172 std::string()); |
| 175 | 173 |
| 176 [sheet_controller_ setInlineDispositionTabContents: | 174 [sheet_controller_ setInlineDispositionTabContents: |
| 177 inline_disposition_tab_contents_.get()]; | 175 inline_disposition_tab_contents_.get()]; |
| 178 PerformLayout(); | 176 PerformLayout(); |
| 179 } | 177 } |
| 180 | 178 |
| 181 void WebIntentPickerCocoa::OnCancelled() { | 179 void WebIntentPickerCocoa::OnCancelled() { |
| 182 DCHECK(delegate_); | 180 DCHECK(delegate_); |
| 183 if (!service_invoked) | 181 if (!service_invoked) |
| 184 delegate_->OnCancelled(); | 182 delegate_->OnCancelled(); |
| 185 delegate_->OnClosing(); | 183 delegate_->OnClosing(); |
| 186 MessageLoop::current()->DeleteSoon(FROM_HERE, this); | 184 MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
| 187 } | 185 } |
| 188 | 186 |
| 189 void WebIntentPickerCocoa::OnServiceChosen(size_t index) { | 187 void WebIntentPickerCocoa::OnServiceChosen(size_t index) { |
| 190 DCHECK(delegate_); | 188 DCHECK(delegate_); |
| 191 const WebIntentPickerModel::InstalledService& installed_service = | 189 const WebIntentPickerModel::InstalledService& installed_service = |
| 192 model_->GetInstalledServiceAt(index); | 190 model_->GetInstalledServiceAt(index); |
| 193 service_invoked = true; | 191 service_invoked = true; |
| 194 delegate_->OnServiceChosen(index, installed_service.disposition); | 192 delegate_->OnServiceChosen(installed_service.url, |
| 193 installed_service.disposition); |
| 195 } | 194 } |
| 196 | 195 |
| OLD | NEW |