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

Unified Diff: chrome/browser/ui/app_list/search/people/people_result.cc

Issue 1925733005: Remove people search (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Deprecate people search actions and enum Created 4 years, 8 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/app_list/search/people/people_result.cc
diff --git a/chrome/browser/ui/app_list/search/people/people_result.cc b/chrome/browser/ui/app_list/search/people/people_result.cc
deleted file mode 100644
index 9bfb791b1f47e56acac96854b199c1e4206f46ad..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/app_list/search/people/people_result.cc
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2013 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/app_list/search/people/people_result.h"
-
-#include <stddef.h>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/memory/ref_counted.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
-#include "chrome/browser/ui/app_list/search/common/url_icon_source.h"
-#include "chrome/browser/ui/app_list/search/people/person.h"
-#include "chrome/browser/ui/app_list/search/search_util.h"
-#include "chrome/common/extensions/api/hangouts_private.h"
-#include "chrome/grit/generated_resources.h"
-#include "components/signin/core/browser/profile_oauth2_token_service.h"
-#include "components/signin/core/browser/signin_manager.h"
-#include "content/public/browser/user_metrics.h"
-#include "extensions/browser/event_router.h"
-#include "grit/theme_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-
-namespace OnHangoutRequested =
- extensions::api::hangouts_private::OnHangoutRequested;
-
-using extensions::api::hangouts_private::User;
-using extensions::api::hangouts_private::HangoutRequest;
-
-namespace {
-
-const char kImageSizePath[] = "s64-p/";
-const char kEmailUrlPrefix[] = "mailto:";
-
-// Add a query parameter to specify the size to fetch the image in. The
-// original profile image can be of an arbitrary size, we ask the server to
-// crop it to a square 64x64 using its smart cropping algorithm.
-GURL GetImageUrl(const GURL& url) {
- std::string image_filename = url.ExtractFileName();
- if (image_filename.empty())
- return url;
-
- return url.Resolve(kImageSizePath + image_filename);
-}
-
-} // namespace
-
-namespace app_list {
-
-PeopleResult::PeopleResult(Profile* profile,
- AppListControllerDelegate* controller,
- std::unique_ptr<Person> person)
- : profile_(profile),
- controller_(controller),
- person_(std::move(person)),
- weak_factory_(this) {
- set_id(person_->id);
- set_title(base::UTF8ToUTF16(person_->display_name));
- set_relevance(person_->interaction_rank);
- set_details(base::UTF8ToUTF16(person_->email));
-
- RefreshHangoutsExtensionId();
- SetDefaultActions();
-
- int icon_size = GetPreferredIconDimension();
- image_ = gfx::ImageSkia(
- new UrlIconSource(
- base::Bind(&PeopleResult::OnIconLoaded, weak_factory_.GetWeakPtr()),
- profile_->GetRequestContext(),
- GetImageUrl(person_->image_url),
- icon_size,
- IDR_PROFILE_PICTURE_LOADING),
- gfx::Size(icon_size, icon_size));
- SetIcon(image_);
-}
-
-PeopleResult::~PeopleResult() {
-}
-
-void PeopleResult::Open(int event_flags) {
- RecordHistogram(SEARCH_PEOPLE_SEARCH_RESULT);
-
- // Action 0 will always be our default action.
- InvokeAction(0, event_flags);
-}
-
-void PeopleResult::InvokeAction(int action_index, int event_flags) {
- if (hangouts_extension_id_.empty()) {
- // If the hangouts app is not available, the only option we are showing
- // to the user is 'Send Email'.
- SendEmail();
- } else {
- switch (action_index) {
- case 0:
- OpenChat();
- break;
- case 1:
- SendEmail();
- break;
- default:
- LOG(ERROR) << "Invalid people search action: " << action_index;
- }
- }
-}
-
-std::unique_ptr<SearchResult> PeopleResult::Duplicate() const {
- return std::unique_ptr<SearchResult>(
- new PeopleResult(profile_, controller_, person_->Duplicate()));
-}
-
-void PeopleResult::OnIconLoaded() {
- // Remove the existing image reps since the icon data is loaded and they
- // need to be re-created.
- const std::vector<gfx::ImageSkiaRep>& image_reps = image_.image_reps();
- for (size_t i = 0; i < image_reps.size(); ++i)
- image_.RemoveRepresentation(image_reps[i].scale());
-
- SetIcon(image_);
-}
-
-void PeopleResult::SetDefaultActions() {
- Actions actions;
-
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
- if (!hangouts_extension_id_.empty()) {
- actions.push_back(Action(
- *bundle.GetImageSkiaNamed(IDR_PEOPLE_SEARCH_ACTION_CHAT),
- *bundle.GetImageSkiaNamed(IDR_PEOPLE_SEARCH_ACTION_CHAT_HOVER),
- *bundle.GetImageSkiaNamed(IDR_PEOPLE_SEARCH_ACTION_CHAT_PRESSED),
- l10n_util::GetStringUTF16(IDS_PEOPLE_SEARCH_ACTION_CHAT_TOOLTIP)));
- }
- actions.push_back(Action(
- *bundle.GetImageSkiaNamed(IDR_PEOPLE_SEARCH_ACTION_EMAIL),
- *bundle.GetImageSkiaNamed(IDR_PEOPLE_SEARCH_ACTION_EMAIL_HOVER),
- *bundle.GetImageSkiaNamed(IDR_PEOPLE_SEARCH_ACTION_EMAIL_PRESSED),
- l10n_util::GetStringUTF16(IDS_PEOPLE_SEARCH_ACTION_EMAIL_TOOLTIP)));
- SetActions(actions);
-}
-
-void PeopleResult::OpenChat() {
- HangoutRequest request;
-
- request.type = extensions::api::hangouts_private::HANGOUT_TYPE_CHAT;
-
- // from: the user this chat request is originating from.
- SigninManagerBase* signin_manager =
- SigninManagerFactory::GetInstance()->GetForProfile(profile_);
- DCHECK(signin_manager);
- request.from = signin_manager->GetAuthenticatedAccountInfo().email;
-
- // to: list of users with whom to start this hangout is with.
- User target;
- target.id = person_->owner_id;
- request.to.push_back(std::move(target));
-
- std::unique_ptr<extensions::Event> event(new extensions::Event(
- extensions::events::HANGOUTS_PRIVATE_ON_HANGOUT_REQUESTED,
- OnHangoutRequested::kEventName, OnHangoutRequested::Create(request)));
-
- // TODO(rkc): Change this once we remove the hangoutsPrivate API.
- // See crbug.com/306672
- extensions::EventRouter::Get(profile_)
- ->DispatchEventToExtension(hangouts_extension_id_, std::move(event));
-
- content::RecordAction(base::UserMetricsAction("PeopleSearch_OpenChat"));
-}
-
-void PeopleResult::SendEmail() {
- controller_->OpenURL(profile_,
- GURL(kEmailUrlPrefix + person_->email),
- ui::PAGE_TRANSITION_LINK,
- NEW_FOREGROUND_TAB);
- content::RecordAction(base::UserMetricsAction("PeopleSearch_SendEmail"));
-}
-
-void PeopleResult::RefreshHangoutsExtensionId() {
- for (const char* id : extension_misc::kHangoutsExtensionIds) {
- if (extensions::EventRouter::Get(profile_)
- ->ExtensionHasEventListener(id, OnHangoutRequested::kEventName)) {
- hangouts_extension_id_ = id;
- return;
- }
- }
- hangouts_extension_id_.clear();
-}
-
-} // namespace app_list
« no previous file with comments | « chrome/browser/ui/app_list/search/people/people_result.h ('k') | chrome/browser/ui/app_list/search/people/person.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698