Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(446)

Unified Diff: chrome/browser/ui/cocoa/web_intent_picker_cocoa.mm

Issue 9148032: [Web Intents] Refactor picker to use WebIntentPickerModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: vertical layout for views Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/web_intent_picker_cocoa.mm
diff --git a/chrome/browser/ui/cocoa/web_intent_picker_cocoa.mm b/chrome/browser/ui/cocoa/web_intent_picker_cocoa.mm
index 03b5cdff89ec031ce5c7881c1d147f2a75a0bf74..c144c2072ec9358c9e065132662c6e5f35429d5f 100644
--- a/chrome/browser/ui/cocoa/web_intent_picker_cocoa.mm
+++ b/chrome/browser/ui/cocoa/web_intent_picker_cocoa.mm
@@ -16,7 +16,10 @@
#include "chrome/browser/ui/intents/web_intent_picker_delegate.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
#include "content/public/browser/web_contents.h"
+#include "grit/ui_resources.h"
#include "skia/ext/skia_utils_mac.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/image/image.h"
using content::WebContents;
@@ -42,21 +45,29 @@ class InlineHtmlContentDelegate: public content::WebContentsDelegate {
// static
WebIntentPicker* WebIntentPicker::Create(Browser* browser,
TabContentsWrapper* wrapper,
- WebIntentPickerDelegate* delegate) {
- return new WebIntentPickerCocoa(browser, wrapper, delegate);
+ WebIntentPickerDelegate* delegate,
+ WebIntentPickerModel* model) {
+ return new WebIntentPickerCocoa(browser, wrapper, delegate, model);
}
WebIntentPickerCocoa::WebIntentPickerCocoa()
- : delegate_(NULL), browser_(NULL), controller_(NULL) {
+ : delegate_(NULL),
+ model_(NULL),
+ browser_(NULL),
+ controller_(NULL) {
}
WebIntentPickerCocoa::WebIntentPickerCocoa(Browser* browser,
TabContentsWrapper* wrapper,
- WebIntentPickerDelegate* delegate)
- : delegate_(delegate),
- browser_(browser),
- controller_(NULL) {
+ WebIntentPickerDelegate* delegate,
+ WebIntentPickerModel* model)
+ : delegate_(delegate),
+ model_(model),
+ browser_(browser),
+ controller_(NULL) {
+ model_->set_observer(this);
+
DCHECK(browser);
DCHECK(delegate);
NSWindow* parentWindow = browser->window()->GetNativeHandle();
@@ -74,37 +85,51 @@ WebIntentPickerCocoa::WebIntentPickerCocoa(Browser* browser,
anchoredAt:anchor];
}
-void WebIntentPickerCocoa::SetServiceURLs(const std::vector<GURL>& urls) {
+WebIntentPickerCocoa::~WebIntentPickerCocoa() {
+ if (model_ != NULL)
+ model_->set_observer(NULL);
+}
+
+void WebIntentPickerCocoa::Close() {
+}
+
+void WebIntentPickerCocoa::OnModelChanged(WebIntentPickerModel* model) {
DCHECK(controller_);
scoped_nsobject<NSMutableArray> urlArray(
- [[NSMutableArray alloc] initWithCapacity:urls.size()]);
+ [[NSMutableArray alloc] initWithCapacity:model->GetItemCount()]);
+
+ for (size_t i = 0; i < model->GetItemCount(); ++i) {
+ const WebIntentPickerModel::Item& item = model->GetItemAt(i);
- for (std::vector<GURL>::const_iterator iter(urls.begin());
- iter != urls.end(); ++iter) {
[urlArray addObject:
- [NSString stringWithUTF8String:iter->spec().c_str()]];
+ [NSString stringWithUTF8String:item.url.spec().c_str()]];
}
[controller_ setServiceURLs:urlArray];
}
-void WebIntentPickerCocoa::SetServiceIcon(size_t index, const SkBitmap& icon) {
+void WebIntentPickerCocoa::OnFaviconChanged(WebIntentPickerModel* model,
+ size_t index) {
DCHECK(controller_);
- if (icon.empty())
- return;
- NSImage* image = gfx::SkBitmapToNSImage(icon);
+ const WebIntentPickerModel::Item& item = model->GetItemAt(index);
+ NSImage* image;
+ if (item.favicon.get() != NULL) {
groby-ooo-7-16 2012/01/25 22:03:13 Can skip the "get" part - scoped_ptr has operator!
binji 2012/01/26 00:27:41 Done.
+ image = item.favicon->ToNSImage();
+ } else {
+ ResourceBundle& rb = ResourceBundle::GetSharedInstance();
groby-ooo-7-16 2012/01/25 22:03:13 I'd suggest moving that to the model instead - tha
binji 2012/01/26 00:27:41 Done.
+ image = rb.GetNativeImageNamed(IDR_DEFAULT_FAVICON);
+ }
+
[controller_ replaceImageAtIndex:index withImage:image];
}
-void WebIntentPickerCocoa::SetDefaultServiceIcon(size_t index) {
-}
+void WebIntentPickerCocoa::OnInlineDisposition(WebIntentPickerModel* model) {
+ const WebIntentPickerModel::Item& item = model->GetItemAt(
+ model->inline_disposition_index());
+ const GURL& url = item.url;
-void WebIntentPickerCocoa::Close() {
-}
-
-WebContents* WebIntentPickerCocoa::SetInlineDisposition(const GURL& url) {
- WebContents* web_contents = WebContents::Create(
+ content::WebContents* web_contents = content::WebContents::Create(
browser_->profile(), NULL, MSG_ROUTING_NONE, NULL, NULL);
inline_disposition_tab_contents_.reset(new TabContentsWrapper(web_contents));
inline_disposition_delegate_.reset(new InlineHtmlContentDelegate);
@@ -118,10 +143,8 @@ WebContents* WebIntentPickerCocoa::SetInlineDisposition(const GURL& url) {
[controller_ setInlineDispositionTabContents:
inline_disposition_tab_contents_.get()];
- return inline_disposition_tab_contents_->web_contents();
-}
-WebIntentPickerCocoa::~WebIntentPickerCocoa() {
+ delegate_->OnInlineDispositionWebContentsCreated(web_contents);
}
void WebIntentPickerCocoa::OnCancelled() {
@@ -132,7 +155,9 @@ void WebIntentPickerCocoa::OnCancelled() {
void WebIntentPickerCocoa::OnServiceChosen(size_t index) {
DCHECK(delegate_);
- delegate_->OnServiceChosen(index);
+ const WebIntentPickerModel::Item& item = model_->GetItemAt(index);
+
groby-ooo-7-16 2012/01/25 22:03:13 Nit: delete empty line
binji 2012/01/26 00:27:41 Done.
+ delegate_->OnServiceChosen(index, item.disposition);
}
void WebIntentPickerCocoa::set_controller(

Powered by Google App Engine
This is Rietveld 408576698