diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/cocoa/cookie_details.mm | 2 | ||||
-rw-r--r-- | chrome/browser/cookies_tree_model.cc | 10 | ||||
-rw-r--r-- | chrome/browser/cookies_tree_model.h | 9 | ||||
-rw-r--r-- | chrome/browser/cookies_tree_model_unittest.cc | 4 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_cookies_api.cc | 10 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_cookies_helpers.cc | 21 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_cookies_helpers.h | 8 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_cookies_unittest.cc | 30 | ||||
-rw-r--r-- | chrome/browser/gtk/options/cookies_view.cc | 4 | ||||
-rw-r--r-- | chrome/browser/gtk/options/cookies_view_unittest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/net/chrome_cookie_notification_details.h | 6 | ||||
-rw-r--r-- | chrome/browser/net/chrome_url_request_context.cc | 7 | ||||
-rw-r--r-- | chrome/browser/renderer_host/resource_message_filter.cc | 6 | ||||
-rw-r--r-- | chrome/browser/views/options/cookies_view.cc | 4 |
14 files changed, 56 insertions, 67 deletions
diff --git a/chrome/browser/cocoa/cookie_details.mm b/chrome/browser/cocoa/cookie_details.mm index 49f4157..7d625b2 100644 --- a/chrome/browser/cocoa/cookie_details.mm +++ b/chrome/browser/cocoa/cookie_details.mm @@ -239,7 +239,7 @@ CookieTreeNode::DetailedInfo::NodeType nodeType = info.node_type; if (nodeType == CookieTreeNode::DetailedInfo::TYPE_COOKIE) { NSString* origin = base::SysWideToNSString(info.origin.c_str()); - return [[[CocoaCookieDetails alloc] initWithCookie:&(info.cookie->second) + return [[[CocoaCookieDetails alloc] initWithCookie:info.cookie origin:origin canEditExpiration:NO] autorelease]; } else if (nodeType == CookieTreeNode::DetailedInfo::TYPE_DATABASE) { diff --git a/chrome/browser/cookies_tree_model.cc b/chrome/browser/cookies_tree_model.cc index 4f24adf..d4d577b 100644 --- a/chrome/browser/cookies_tree_model.cc +++ b/chrome/browser/cookies_tree_model.cc @@ -48,8 +48,8 @@ CookiesTreeModel* CookieTreeNode::GetModel() const { // CookieTreeCookieNode, public: CookieTreeCookieNode::CookieTreeCookieNode( - net::CookieMonster::CookieListPair* cookie) - : CookieTreeNode(UTF8ToWide(cookie->second.Name())), + net::CookieMonster::CanonicalCookie* cookie) + : CookieTreeNode(UTF8ToWide(cookie->Name())), cookie_(cookie) { } @@ -62,7 +62,7 @@ void CookieTreeCookieNode::DeleteStoredObjects() { // invalidate our pointers), and the fact that it contains semi out-of-date // data is not problematic as we don't re-build the model based on that. GetModel()->cookie_monster_-> - DeleteCookie(cookie_->first, cookie_->second, true); + DeleteCookie(cookie_->Domain(), *cookie_, true); } namespace { @@ -401,9 +401,9 @@ void CookiesTreeModel::LoadCookiesWithFilter(const std::wstring& filter) { CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); for (CookieList::iterator it = all_cookies_.begin(); it != all_cookies_.end(); ++it) { - std::string origin_host = it->first; + std::string origin_host = it->Domain(); if (origin_host.length() > 1 && origin_host[0] == '.') - origin_host = it->first.substr(1); + origin_host = it->Domain().substr(1); // We treat secure cookies just the same as normal ones. GURL origin(std::string(chrome::kHttpScheme) + chrome::kStandardSchemeSeparator + origin_host + "/"); diff --git a/chrome/browser/cookies_tree_model.h b/chrome/browser/cookies_tree_model.h index 7e6675a..435b532 100644 --- a/chrome/browser/cookies_tree_model.h +++ b/chrome/browser/cookies_tree_model.h @@ -52,7 +52,7 @@ class CookieTreeNode : public TreeNode<CookieTreeNode> { }; DetailedInfo(const std::wstring& origin, NodeType node_type, - const net::CookieMonster::CookieListPair* cookie, + const net::CookieMonster::CanonicalCookie* cookie, const BrowsingDataDatabaseHelper::DatabaseInfo* database_info, const BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info, @@ -70,7 +70,7 @@ class CookieTreeNode : public TreeNode<CookieTreeNode> { std::wstring origin; NodeType node_type; - const net::CookieMonster::CookieListPair* cookie; + const net::CookieMonster::CanonicalCookie* cookie; const BrowsingDataDatabaseHelper::DatabaseInfo* database_info; const BrowsingDataLocalStorageHelper::LocalStorageInfo* local_storage_info; const appcache::AppCacheInfo* appcache_info; @@ -180,7 +180,7 @@ class CookieTreeCookieNode : public CookieTreeNode { // Does not take ownership of cookie, and cookie should remain valid at least // as long as the CookieTreeCookieNode is valid. - explicit CookieTreeCookieNode(net::CookieMonster::CookieListPair* cookie); + explicit CookieTreeCookieNode(net::CookieMonster::CanonicalCookie* cookie); virtual ~CookieTreeCookieNode() {} // CookieTreeNode methods: @@ -193,7 +193,7 @@ class CookieTreeCookieNode : public CookieTreeNode { private: // Cookie_ is not owned by the node, and is expected to remain valid as long // as the CookieTreeCookieNode is valid. - net::CookieMonster::CookieListPair* cookie_; + net::CookieMonster::CanonicalCookie* cookie_; DISALLOW_COPY_AND_ASSIGN(CookieTreeCookieNode); }; @@ -404,7 +404,6 @@ class CookiesTreeModel : public TreeNodeModel<CookieTreeNode> { DATABASE = 2 }; typedef net::CookieMonster::CookieList CookieList; - typedef std::vector<net::CookieMonster::CookieListPair*> CookiePtrList; typedef std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> DatabaseInfoList; typedef std::vector<BrowsingDataLocalStorageHelper::LocalStorageInfo> diff --git a/chrome/browser/cookies_tree_model_unittest.cc b/chrome/browser/cookies_tree_model_unittest.cc index ff0f777..793a9ac 100644 --- a/chrome/browser/cookies_tree_model_unittest.cc +++ b/chrome/browser/cookies_tree_model_unittest.cc @@ -100,7 +100,7 @@ class CookiesTreeModelTest : public testing::Test { std::vector<std::string> parts; net::CookieMonster::CookieList cookie_list = monster->GetAllCookies(); for (size_t i = 0; i < cookie_list.size(); ++i) - parts.push_back(cookie_list[i].second.Name()); + parts.push_back(cookie_list[i].Name()); return JoinString(parts, ','); } @@ -121,7 +121,7 @@ class CookiesTreeModelTest : public testing::Test { case CookieTreeNode::DetailedInfo::TYPE_DATABASE: return node->GetDetailedInfo().database_info->database_name + ","; case CookieTreeNode::DetailedInfo::TYPE_COOKIE: - return node->GetDetailedInfo().cookie->second.Name() + ","; + return node->GetDetailedInfo().cookie->Name() + ","; case CookieTreeNode::DetailedInfo::TYPE_APPCACHE: return node->GetDetailedInfo().appcache_info->manifest_url.spec() + ","; diff --git a/chrome/browser/extensions/extension_cookies_api.cc b/chrome/browser/extensions/extension_cookies_api.cc index c20d1eb..096059d 100644 --- a/chrome/browser/extensions/extension_cookies_api.cc +++ b/chrome/browser/extensions/extension_cookies_api.cc @@ -58,14 +58,14 @@ void ExtensionCookiesEventRouter::CookieChanged( dict->SetBoolean(keys::kRemovedKey, details->removed); dict->Set( keys::kCookieKey, - extension_cookies_helpers::CreateCookieValue(*details->cookie_pair, + extension_cookies_helpers::CreateCookieValue(*details->cookie, extension_cookies_helpers::GetStoreIdFromProfile(profile))); args.Append(dict); std::string json_args; base::JSONWriter::Write(&args, false, &json_args); GURL cookie_domain = - extension_cookies_helpers::GetURLFromCookiePair(*details->cookie_pair); + extension_cookies_helpers::GetURLFromCanonicalCookie(*details->cookie); DispatchEvent(profile, keys::kOnChanged, json_args, cookie_domain); } @@ -191,8 +191,7 @@ void GetCookieFunction::RespondOnUIThread() { for (it = cookie_list_.begin(); it != cookie_list_.end(); ++it) { // Return the first matching cookie. Relies on the fact that the // CookieMonster retrieves them in reverse domain-length order. - const net::CookieMonster::CanonicalCookie& cookie = it->second; - if (cookie.Name() == name_) { + if (it->Name() == name_) { result_.reset( extension_cookies_helpers::CreateCookieValue(*it, store_id_)); break; @@ -251,7 +250,8 @@ void GetAllCookiesFunction::RespondOnUIThread() { if (extension) { ListValue* matching_list = new ListValue(); extension_cookies_helpers::AppendMatchingCookiesToList( - cookie_list_, store_id_, url_, details_, GetExtension(), matching_list); + cookie_list_, store_id_, url_, details_, + GetExtension(), matching_list); result_.reset(matching_list); } SendResponse(true); diff --git a/chrome/browser/extensions/extension_cookies_helpers.cc b/chrome/browser/extensions/extension_cookies_helpers.cc index 903e89e..2322c1d 100644 --- a/chrome/browser/extensions/extension_cookies_helpers.cc +++ b/chrome/browser/extensions/extension_cookies_helpers.cc @@ -40,16 +40,15 @@ const char* GetStoreIdFromProfile(Profile* profile) { } DictionaryValue* CreateCookieValue( - const net::CookieMonster::CookieListPair& cookie_pair, + const net::CookieMonster::CanonicalCookie& cookie, const std::string& store_id) { DictionaryValue* result = new DictionaryValue(); - const net::CookieMonster::CanonicalCookie& cookie = cookie_pair.second; result->SetString(keys::kNameKey, cookie.Name()); result->SetString(keys::kValueKey, cookie.Value()); - result->SetString(keys::kDomainKey, cookie_pair.first); + result->SetString(keys::kDomainKey, cookie.Domain()); result->SetBoolean(keys::kHostOnlyKey, - net::CookieMonster::DomainIsHostOnly(cookie_pair.first)); + net::CookieMonster::DomainIsHostOnly(cookie.Domain())); result->SetString(keys::kPathKey, cookie.Path()); result->SetBoolean(keys::kSecureKey, cookie.IsSecure()); result->SetBoolean(keys::kHttpOnlyKey, cookie.IsHttpOnly()); @@ -82,10 +81,9 @@ net::CookieMonster::CookieList GetCookieListFromStore( return monster->GetAllCookies(); } -GURL GetURLFromCookiePair( - const net::CookieMonster::CookieListPair& cookie_pair) { - const std::string& domain_key = cookie_pair.first; - const net::CookieMonster::CanonicalCookie& cookie = cookie_pair.second; +GURL GetURLFromCanonicalCookie( + const net::CookieMonster::CanonicalCookie& cookie) { + const std::string& domain_key = cookie.Domain(); const std::string scheme = cookie.IsSecure() ? chrome::kHttpsScheme : chrome::kHttpScheme; const std::string host = @@ -103,7 +101,7 @@ void AppendMatchingCookiesToList( for (it = all_cookies.begin(); it != all_cookies.end(); ++it) { // Ignore any cookie whose domain doesn't match the extension's // host permissions. - GURL cookie_domain_url = GetURLFromCookiePair(*it); + GURL cookie_domain_url = GetURLFromCanonicalCookie(*it); if (!extension->HasHostPermission(cookie_domain_url)) continue; // Filter the cookie using the match filter. @@ -129,11 +127,10 @@ MatchFilter::MatchFilter(const DictionaryValue* details) } bool MatchFilter::MatchesCookie( - const net::CookieMonster::CookieListPair& cookie_pair) { - const net::CookieMonster::CanonicalCookie& cookie = cookie_pair.second; + const net::CookieMonster::CanonicalCookie& cookie) { return MatchesString(keys::kNameKey, cookie.Name()) && - MatchesDomain(cookie_pair.first) && + MatchesDomain(cookie.Domain()) && MatchesString(keys::kPathKey, cookie.Path()) && MatchesBoolean(keys::kSecureKey, cookie.IsSecure()) && MatchesBoolean(keys::kSessionKey, !cookie.DoesExpire()); diff --git a/chrome/browser/extensions/extension_cookies_helpers.h b/chrome/browser/extensions/extension_cookies_helpers.h index 77284c6..a06621f 100644 --- a/chrome/browser/extensions/extension_cookies_helpers.h +++ b/chrome/browser/extensions/extension_cookies_helpers.h @@ -35,7 +35,7 @@ const char* GetStoreIdFromProfile(Profile* profile); // allocates a new DictionaryValue object; the caller is responsible for // freeing it. DictionaryValue* CreateCookieValue( - const net::CookieMonster::CookieListPair& cookie_pair, + const net::CookieMonster::CanonicalCookie& cookie, const std::string& store_id); // Constructs a CookieStore object as defined by the cookies API. This function @@ -54,8 +54,8 @@ net::CookieMonster::CookieList GetCookieListFromStore( // a cookie against the extension's host permissions. The Secure // property of the cookie defines the URL scheme, and the cookie's // domain becomes the URL host. -GURL GetURLFromCookiePair( - const net::CookieMonster::CookieListPair& cookie_pair); +GURL GetURLFromCanonicalCookie( + const net::CookieMonster::CanonicalCookie& cookie); // Looks through all cookies in the given cookie store, and appends to the // match list all the cookies that both match the given URL and cookie details @@ -86,7 +86,7 @@ class MatchFilter { // Returns true if the given cookie matches the properties in the match // filter. - bool MatchesCookie(const net::CookieMonster::CookieListPair& cookie_pair); + bool MatchesCookie(const net::CookieMonster::CanonicalCookie& cookie); private: // Returns true if the details dictionary contains a string with the given diff --git a/chrome/browser/extensions/extension_cookies_unittest.cc b/chrome/browser/extensions/extension_cookies_unittest.cc index 0f746f2..fbc1fdc 100644 --- a/chrome/browser/extensions/extension_cookies_unittest.cc +++ b/chrome/browser/extensions/extension_cookies_unittest.cc @@ -104,10 +104,9 @@ TEST_F(ExtensionCookiesTest, ExtensionTypeCreation) { net::CookieMonster::CanonicalCookie cookie1( "ABC", "DEF", "www.foobar.com", "/", false, false, base::Time(), base::Time(), false, base::Time()); - net::CookieMonster::CookieListPair cookie_pair1("www.foobar.com", cookie1); scoped_ptr<DictionaryValue> cookie_value1( extension_cookies_helpers::CreateCookieValue( - cookie_pair1, "some cookie store")); + cookie1, "some cookie store")); EXPECT_TRUE(cookie_value1->GetString(keys::kNameKey, &string_value)); EXPECT_EQ("ABC", string_value); EXPECT_TRUE(cookie_value1->GetString(keys::kValueKey, &string_value)); @@ -132,10 +131,9 @@ TEST_F(ExtensionCookiesTest, ExtensionTypeCreation) { net::CookieMonster::CanonicalCookie cookie2( "ABC", "DEF", ".foobar.com", "/", false, false, base::Time(), base::Time(), true, base::Time::FromDoubleT(10000)); - net::CookieMonster::CookieListPair cookie_pair2(".foobar.com", cookie2); scoped_ptr<DictionaryValue> cookie_value2( extension_cookies_helpers::CreateCookieValue( - cookie_pair2, "some cookie store")); + cookie2, "some cookie store")); EXPECT_TRUE(cookie_value2->GetBoolean(keys::kHostOnlyKey, &boolean_value)); EXPECT_EQ(false, boolean_value); EXPECT_TRUE(cookie_value2->GetBoolean(keys::kSessionKey, &boolean_value)); @@ -153,22 +151,20 @@ TEST_F(ExtensionCookiesTest, ExtensionTypeCreation) { EXPECT_EQ(tab_ids, value); } -TEST_F(ExtensionCookiesTest, GetURLFromCookiePair) { +TEST_F(ExtensionCookiesTest, GetURLFromCanonicalCookie) { net::CookieMonster::CanonicalCookie cookie1( "ABC", "DEF", "www.foobar.com", "/", false, false, base::Time(), base::Time(), false, base::Time()); - net::CookieMonster::CookieListPair cookie_pair1("www.foobar.com", cookie1); EXPECT_EQ("http://www.foobar.com/", - extension_cookies_helpers::GetURLFromCookiePair( - cookie_pair1).spec()); + extension_cookies_helpers::GetURLFromCanonicalCookie( + cookie1).spec()); net::CookieMonster::CanonicalCookie cookie2( "ABC", "DEF", ".helloworld.com", "/", true, false, base::Time(), base::Time(), false, base::Time()); - net::CookieMonster::CookieListPair cookie_pair2(".helloworld.com", cookie2); EXPECT_EQ("https://helloworld.com/", - extension_cookies_helpers::GetURLFromCookiePair( - cookie_pair2).spec()); + extension_cookies_helpers::GetURLFromCanonicalCookie( + cookie2).spec()); } TEST_F(ExtensionCookiesTest, EmptyDictionary) { @@ -176,9 +172,8 @@ TEST_F(ExtensionCookiesTest, EmptyDictionary) { extension_cookies_helpers::MatchFilter filter(details.get()); std::string domain; net::CookieMonster::CanonicalCookie cookie; - net::CookieMonster::CookieListPair cookie_pair(domain, cookie); - EXPECT_TRUE(filter.MatchesCookie(cookie_pair)); + EXPECT_TRUE(filter.MatchesCookie(cookie)); } TEST_F(ExtensionCookiesTest, DomainMatching) { @@ -193,11 +188,14 @@ TEST_F(ExtensionCookiesTest, DomainMatching) { }; scoped_ptr<DictionaryValue> details(new DictionaryValue()); - net::CookieMonster::CanonicalCookie cookie; for (size_t i = 0; i < arraysize(tests); ++i) { details->SetString(keys::kDomainKey, std::string(tests[i].filter)); extension_cookies_helpers::MatchFilter filter(details.get()); - net::CookieMonster::CookieListPair cookie_pair(tests[i].domain, cookie); - EXPECT_EQ(tests[i].matches, filter.MatchesCookie(cookie_pair)); + net::CookieMonster::CanonicalCookie cookie("", "", tests[i].domain, + "", false, false, + base::Time(), + base::Time(), + false, base::Time()); + EXPECT_EQ(tests[i].matches, filter.MatchesCookie(cookie)); } } diff --git a/chrome/browser/gtk/options/cookies_view.cc b/chrome/browser/gtk/options/cookies_view.cc index bc171d2..b32f664 100644 --- a/chrome/browser/gtk/options/cookies_view.cc +++ b/chrome/browser/gtk/options/cookies_view.cc @@ -252,8 +252,8 @@ void CookiesView::EnableControls() { if (detailed_info.node_type == CookieTreeNode::DetailedInfo::TYPE_COOKIE) { gtk_chrome_cookie_view_display_cookie( GTK_CHROME_COOKIE_VIEW(cookie_display_), - detailed_info.cookie->first, - detailed_info.cookie->second); + detailed_info.cookie->Domain(), + *detailed_info.cookie); } else if (detailed_info.node_type == CookieTreeNode::DetailedInfo::TYPE_DATABASE) { gtk_chrome_cookie_view_display_database( diff --git a/chrome/browser/gtk/options/cookies_view_unittest.cc b/chrome/browser/gtk/options/cookies_view_unittest.cc index 8205032..903fe25 100644 --- a/chrome/browser/gtk/options/cookies_view_unittest.cc +++ b/chrome/browser/gtk/options/cookies_view_unittest.cc @@ -96,7 +96,7 @@ class CookiesViewTest : public testing::Test { std::vector<std::string> parts; net::CookieMonster::CookieList cookie_list = monster->GetAllCookies(); for (size_t i = 0; i < cookie_list.size(); ++i) - parts.push_back(cookie_list[i].second.Name()); + parts.push_back(cookie_list[i].Name()); return JoinString(parts, ','); } diff --git a/chrome/browser/net/chrome_cookie_notification_details.h b/chrome/browser/net/chrome_cookie_notification_details.h index a4ee4a0..e7b71dd 100644 --- a/chrome/browser/net/chrome_cookie_notification_details.h +++ b/chrome/browser/net/chrome_cookie_notification_details.h @@ -9,13 +9,13 @@ struct ChromeCookieDetails { public: - ChromeCookieDetails(net::CookieMonster::CookieListPair* cookie_pair_copy, + ChromeCookieDetails(net::CookieMonster::CanonicalCookie* cookie_copy, bool is_removed) - : cookie_pair(cookie_pair_copy), + : cookie(cookie_copy), removed(is_removed) { } - net::CookieMonster::CookieListPair* cookie_pair; + net::CookieMonster::CanonicalCookie* cookie; bool removed; }; diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc index 27fc4d7..17197a4 100644 --- a/chrome/browser/net/chrome_url_request_context.cc +++ b/chrome/browser/net/chrome_url_request_context.cc @@ -133,14 +133,13 @@ class ChromeCookieMonsterDelegate : public net::CookieMonster::Delegate { // net::CookieMonster::Delegate implementation. virtual void OnCookieChanged( - const std::string& domain_key, const net::CookieMonster::CanonicalCookie& cookie, bool removed) { ChromeThread::PostTask( ChromeThread::UI, FROM_HERE, NewRunnableMethod(this, &ChromeCookieMonsterDelegate::OnCookieChangedAsyncHelper, - net::CookieMonster::CookieListPair(domain_key, cookie), + cookie, removed)); } @@ -193,10 +192,10 @@ class ChromeCookieMonsterDelegate : public net::CookieMonster::Delegate { virtual ~ChromeCookieMonsterDelegate() {} void OnCookieChangedAsyncHelper( - net::CookieMonster::CookieListPair cookie_pair, + net::CookieMonster::CanonicalCookie cookie, bool removed) { if (profile_getter_->get()) { - ChromeCookieDetails cookie_details(&cookie_pair, removed); + ChromeCookieDetails cookie_details(&cookie, removed); NotificationService::current()->Notify( NotificationType::COOKIE_CHANGED, Source<Profile>(profile_getter_->get()), diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc index 698e385..eba40b6 100644 --- a/chrome/browser/renderer_host/resource_message_filter.cc +++ b/chrome/browser/renderer_host/resource_message_filter.cc @@ -254,11 +254,7 @@ class GetRawCookiesCompletion : public net::CompletionCallback { std::vector<webkit_glue::WebCookie> cookies; for (size_t i = 0; i < cookie_list.size(); ++i) { - // TODO(darin): url.host() is not necessarily the domain of the cookie. - // We need a different API on CookieMonster to provide the domain info. - // See http://crbug.com/34315. - cookies.push_back( - webkit_glue::WebCookie(cookie_list[i].first, cookie_list[i].second)); + cookies.push_back(webkit_glue::WebCookie(cookie_list[i])); } ViewHostMsg_GetRawCookies::WriteReplyParams(reply_msg_, cookies); diff --git a/chrome/browser/views/options/cookies_view.cc b/chrome/browser/views/options/cookies_view.cc index 9bdbb67..ef730dd 100644 --- a/chrome/browser/views/options/cookies_view.cc +++ b/chrome/browser/views/options/cookies_view.cc @@ -215,8 +215,8 @@ void CookiesView::OnTreeViewSelectionChanged(views::TreeView* tree_view) { GetDetailedInfo(); if (detailed_info.node_type == CookieTreeNode::DetailedInfo::TYPE_COOKIE) { UpdateVisibleDetailedInfo(cookie_info_view_); - cookie_info_view_->SetCookie(detailed_info.cookie->first, - detailed_info.cookie->second); + cookie_info_view_->SetCookie(detailed_info.cookie->Domain(), + *detailed_info.cookie); } else if (detailed_info.node_type == CookieTreeNode::DetailedInfo::TYPE_DATABASE) { UpdateVisibleDetailedInfo(database_info_view_); |