Index: chrome/browser/ui/intents/web_intents_model.cc |
diff --git a/chrome/browser/ui/intents/web_intents_model.cc b/chrome/browser/ui/intents/web_intents_model.cc |
deleted file mode 100644 |
index 34d5e1c4b72797b868fec0a3b2b2bd166aca6e02..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/intents/web_intents_model.cc |
+++ /dev/null |
@@ -1,175 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/intents/web_intents_model.h" |
- |
-#include "base/string_split.h" |
-#include "base/string_util.h" |
-#include "base/stringprintf.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/intents/web_intents_registry.h" |
- |
-WebIntentsTreeNode::WebIntentsTreeNode() |
- : ui::TreeNode<WebIntentsTreeNode>(string16()), |
- type_(TYPE_ROOT) {} |
- |
-WebIntentsTreeNode::WebIntentsTreeNode(const string16& title) |
- : ui::TreeNode<WebIntentsTreeNode>(title), |
- type_(TYPE_ORIGIN) {} |
- |
-WebIntentsTreeNode::~WebIntentsTreeNode() {} |
- |
-ServiceTreeNode::ServiceTreeNode(const string16& title) |
- : WebIntentsTreeNode(title, WebIntentsTreeNode::TYPE_SERVICE), |
- blocked_(false), |
- disabled_(false) {} |
- |
-ServiceTreeNode::~ServiceTreeNode() {} |
- |
-WebIntentsModel::WebIntentsModel(WebIntentsRegistry* intents_registry) |
- : ui::TreeNodeModel<WebIntentsTreeNode>(new WebIntentsTreeNode()), |
- intents_registry_(intents_registry), |
- batch_update_(0) { |
- LoadModel(); |
-} |
- |
-WebIntentsModel::~WebIntentsModel() {} |
- |
-void WebIntentsModel::AddWebIntentsTreeObserver(Observer* observer) { |
- intents_observer_list_.AddObserver(observer); |
- // Call super so that TreeNodeModel can notify, too. |
- ui::TreeNodeModel<WebIntentsTreeNode>::AddObserver(observer); |
-} |
- |
-void WebIntentsModel::RemoveWebIntentsTreeObserver(Observer* observer) { |
- intents_observer_list_.RemoveObserver(observer); |
- // Call super so that TreeNodeModel doesn't have dead pointers. |
- ui::TreeNodeModel<WebIntentsTreeNode>::RemoveObserver(observer); |
-} |
- |
-string16 WebIntentsModel::GetTreeNodeId(WebIntentsTreeNode* node) { |
- if (node->Type() == WebIntentsTreeNode::TYPE_ORIGIN) |
- return node->GetTitle(); |
- |
- // TODO(gbillock): handle TYPE_SERVICE when/if we ever want to do |
- // specific managing of them. |
- |
- return string16(); |
-} |
- |
-WebIntentsTreeNode* WebIntentsModel::GetTreeNode(const std::string& path_id) { |
- if (path_id.empty()) |
- return GetRoot(); |
- |
- std::vector<std::string> node_ids; |
- base::SplitString(path_id, ',', &node_ids); |
- |
- for (int i = 0; i < GetRoot()->child_count(); ++i) { |
- WebIntentsTreeNode* node = GetRoot()->GetChild(i); |
- if (UTF16ToUTF8(node->GetTitle()) == node_ids[0]) { |
- if (node_ids.size() == 1) |
- return node; |
- } |
- } |
- |
- // TODO: support service nodes? |
- return NULL; |
-} |
- |
-void WebIntentsModel::GetChildNodeList(WebIntentsTreeNode* parent, |
- int start, int count, |
- base::ListValue* nodes) { |
- for (int i = 0; i < count; ++i) { |
- base::DictionaryValue* dict = new base::DictionaryValue; |
- WebIntentsTreeNode* child = parent->GetChild(start + i); |
- GetWebIntentsTreeNodeDictionary(*child, dict); |
- nodes->Append(dict); |
- } |
-} |
- |
-void WebIntentsModel::GetWebIntentsTreeNodeDictionary( |
- const WebIntentsTreeNode& node, |
- base::DictionaryValue* dict) { |
- if (node.Type() == WebIntentsTreeNode::TYPE_ROOT) { |
- dict->SetBoolean("hasChildren", !node.empty()); |
- dict->SetInteger("numChildren", node.child_count()); |
- return; |
- } |
- |
- if (node.Type() == WebIntentsTreeNode::TYPE_ORIGIN) { |
- dict->SetString("site", node.GetTitle()); |
- dict->SetBoolean("hasChildren", !node.empty()); |
- dict->SetInteger("numChildren", node.child_count()); |
- return; |
- } |
- |
- if (node.Type() == WebIntentsTreeNode::TYPE_SERVICE) { |
- const ServiceTreeNode* snode = static_cast<const ServiceTreeNode*>(&node); |
- dict->SetString("site", snode->GetTitle()); |
- dict->SetString("name", snode->ServiceName()); |
- dict->SetString("url", snode->ServiceUrl()); |
- dict->SetString("icon", snode->IconUrl()); |
- dict->SetString("action", snode->Action()); |
- dict->Set("types", snode->Types().DeepCopy()); |
- dict->SetBoolean("blocked", snode->IsBlocked()); |
- dict->SetBoolean("disabled", snode->IsDisabled()); |
- return; |
- } |
-} |
- |
-WebIntentsTreeNode* WebIntentsModel::GetNodeForHost(const std::string& host) { |
- WebIntentsTreeNode* root = GetRoot(); |
- for (int i = 0; i < root->child_count(); ++i) { |
- if (UTF16ToASCII(root->GetChild(i)->GetTitle()) == host) |
- return root->GetChild(i); |
- } |
- |
- // Couldn't find an existing matching node; create a new one. |
- WebIntentsTreeNode* origin = new WebIntentsTreeNode(ASCIIToUTF16(host)); |
- Add(GetRoot(), origin, GetRoot()->child_count()); |
- return origin; |
-} |
- |
-void WebIntentsModel::LoadModel() { |
- NotifyObserverBeginBatch(); |
- intents_registry_->GetAllIntentServices( |
- base::Bind(&WebIntentsModel::OnIntentsQueryDone, base::Unretained(this))); |
-} |
- |
-void WebIntentsModel::OnIntentsQueryDone( |
- const std::vector<webkit_glue::WebIntentServiceData>& services) { |
- for (size_t i = 0; i < services.size(); ++i) { |
- WebIntentsTreeNode* n = GetNodeForHost(services[i].service_url.host()); |
- ServiceTreeNode* ns = new ServiceTreeNode(ASCIIToUTF16( |
- services[i].service_url.host())); |
- ns->SetServiceName(services[i].title); |
- ns->SetServiceUrl(ASCIIToUTF16(services[i].service_url.spec())); |
- GURL icon_url = services[i].service_url.GetOrigin().Resolve("/favicon.ico"); |
- ns->SetIconUrl(ASCIIToUTF16(icon_url.spec())); |
- ns->SetAction(services[i].action); |
- ns->AddType(services[i].type); |
- Add(n, ns, n->child_count()); |
- } |
- |
- NotifyObserverEndBatch(); |
-} |
- |
-void WebIntentsModel::NotifyObserverBeginBatch() { |
- // Only notify the model once if we're batching in a nested manner. |
- if (batch_update_++ == 0) { |
- FOR_EACH_OBSERVER(Observer, |
- intents_observer_list_, |
- TreeModelBeginBatch(this)); |
- } |
-} |
- |
-void WebIntentsModel::NotifyObserverEndBatch() { |
- // Only notify the observers if this is the outermost call to EndBatch() if |
- // called in a nested manner. |
- if (--batch_update_ == 0) { |
- FOR_EACH_OBSERVER(Observer, |
- intents_observer_list_, |
- TreeModelEndBatch(this)); |
- } |
-} |