forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Credential Manager: Renderer-side implementation.
This patch does three things: 1. Implements the Blink platform interface WebCredentialManagerClient by adding a CredentialManagerClient class to the password manager component. 2. Wires that implementation up to Blink's platform layer by creating an instance of the new client, held in ChromeContentRendererClient, and setting it as each new RenderView's client. 3. Stubs out IPCs for the renderer to pass messages up to the browser in order to do the heavy lifting of actually answering Blink's requests by generating and delivering Credential objects. BUG=400674 TBR=tkent@chromium.org Review URL: https://codereview.chromium.org/464883002 Cr-Commit-Position: refs/heads/master@{#291390} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291390 0039d316-1c4b-4281-b951-d872f2087c98
- Loading branch information
mkwst@chromium.org
committed
Aug 22, 2014
1 parent
73902b6
commit e08e2f5
Showing
25 changed files
with
947 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Copyright 2014 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. | ||
|
||
static_library("common") { | ||
sources = [ | ||
"credential_manager_message_generator.cc", | ||
"credential_manager_message_generator.h", | ||
"credential_manager_messages.h", | ||
"credential_manager_types.cc", | ||
"credential_manager_types.h", | ||
] | ||
|
||
deps = [ | ||
"//base", | ||
"//content/public/common", | ||
"//ipc", | ||
"//third_party/WebKit/public:blink", | ||
"//url", | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
include_rules = [ | ||
"+content/public/common", | ||
"+ipc", | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# Changes to IPC messages require a security review to avoid introducing | ||
# new sandbox escapes. | ||
per-file credential_manager_messages*.h=set noparent | ||
per-file credential_manager_messages*.h=cevans@chromium.org | ||
per-file credential_manager_messages*.h=dcheng@chromium.org | ||
per-file credential_manager_messages*.h=inferno@chromium.org | ||
per-file credential_manager_messages*.h=jln@chromium.org | ||
per-file credential_manager_messages*.h=jschuh@chromium.org | ||
per-file credential_manager_messages*.h=kenrb@chromium.org | ||
per-file credential_manager_messages*.h=nasko@chromium.org | ||
per-file credential_manager_messages*.h=palmer@chromium.org | ||
per-file credential_manager_messages*.h=tsepez@chromium.org |
33 changes: 33 additions & 0 deletions
33
components/password_manager/content/common/credential_manager_message_generator.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
// Copyright 2014 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. | ||
|
||
// Get basic type definitions. | ||
#define IPC_MESSAGE_IMPL | ||
#include "components/password_manager/content/common/credential_manager_message_generator.h" | ||
|
||
// Generate constructors. | ||
#include "ipc/struct_constructor_macros.h" | ||
#include "components/password_manager/content/common/credential_manager_message_generator.h" | ||
|
||
// Generate destructors. | ||
#include "ipc/struct_destructor_macros.h" | ||
#include "components/password_manager/content/common/credential_manager_message_generator.h" | ||
|
||
// Generate param traits write methods. | ||
#include "ipc/param_traits_write_macros.h" | ||
namespace IPC { | ||
#include "components/password_manager/content/common/credential_manager_message_generator.h" | ||
} // namespace IPC | ||
|
||
// Generate param traits read methods. | ||
#include "ipc/param_traits_read_macros.h" | ||
namespace IPC { | ||
#include "components/password_manager/content/common/credential_manager_message_generator.h" | ||
} // namespace IPC | ||
|
||
// Generate param traits log methods. | ||
#include "ipc/param_traits_log_macros.h" | ||
namespace IPC { | ||
#include "components/password_manager/content/common/credential_manager_message_generator.h" | ||
} // namespace IPC |
7 changes: 7 additions & 0 deletions
7
components/password_manager/content/common/credential_manager_message_generator.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
// Copyright 2014 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. | ||
|
||
// Multiply-included file, hence no include guard. | ||
|
||
#include "components/password_manager/content/common/credential_manager_messages.h" |
93 changes: 93 additions & 0 deletions
93
components/password_manager/content/common/credential_manager_messages.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
// Copyright 2014 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. | ||
|
||
// Message definition file, included multiple times, hence no include guard. | ||
|
||
#include <string> | ||
#include <vector> | ||
|
||
#include "base/strings/string16.h" | ||
#include "components/password_manager/content/common/credential_manager_types.h" | ||
#include "content/public/common/common_param_traits.h" | ||
#include "content/public/common/common_param_traits_macros.h" | ||
#include "ipc/ipc_message_macros.h" | ||
#include "ipc/ipc_message_utils.h" | ||
#include "third_party/WebKit/public/platform/WebCredentialManagerError.h" | ||
#include "url/gurl.h" | ||
|
||
#define IPC_MESSAGE_START CredentialManagerMsgStart | ||
|
||
IPC_ENUM_TRAITS_MAX_VALUE(blink::WebCredentialManagerError::ErrorType, | ||
blink::WebCredentialManagerError::ErrorTypeLast); | ||
|
||
IPC_ENUM_TRAITS_MAX_VALUE(password_manager::CredentialType, | ||
password_manager::CREDENTIAL_TYPE_LAST); | ||
|
||
IPC_STRUCT_TRAITS_BEGIN(password_manager::CredentialInfo) | ||
IPC_STRUCT_TRAITS_MEMBER(type) | ||
IPC_STRUCT_TRAITS_MEMBER(id) | ||
IPC_STRUCT_TRAITS_MEMBER(name) | ||
IPC_STRUCT_TRAITS_MEMBER(avatar) | ||
IPC_STRUCT_TRAITS_MEMBER(password) | ||
IPC_STRUCT_TRAITS_MEMBER(federation) | ||
IPC_STRUCT_TRAITS_END() | ||
|
||
// ---------------------------------------------------------------------------- | ||
// Messages sent from the renderer to the browser | ||
|
||
// Passes the notification from 'navigator.credentials.notifyFailedSignIn()' up | ||
// to the browser process in order to suppress the automatic bubble which would | ||
// pop up in order to prompt the user to save the credential she used for | ||
// signin. The browser process will respond with a | ||
// CredentialManagerMsg_AcknowledgeFailedSignedIn message. | ||
IPC_MESSAGE_ROUTED2(CredentialManagerHostMsg_NotifyFailedSignIn, | ||
int /* request_id */, | ||
password_manager::CredentialInfo /* credential */) | ||
|
||
// Passes the notification from 'navigator.credentials.notifySignedIn()' up to | ||
// the browser process in order to (among other things) prompt the user to save | ||
// the credential she used for signin. The browser process will respond with a | ||
// CredentialManagerMsg_AcknowledgeSignedIn message. | ||
IPC_MESSAGE_ROUTED2(CredentialManagerHostMsg_NotifySignedIn, | ||
int /* request_id */, | ||
password_manager::CredentialInfo /* credential */) | ||
|
||
// Passes the notification from 'navigator.credentials.notifySignedOut()' up to | ||
// the browser process in order to clear the "zeroclick" bit on that origin's | ||
// stored credentials. The browser process will respond with a | ||
// CredentialManagerMsg_AcknowledgeSignedOut message. | ||
IPC_MESSAGE_ROUTED1(CredentialManagerHostMsg_NotifySignedOut, | ||
int /* request_id */) | ||
|
||
// Requests a credential from the browser process in response to a page calling | ||
// 'navigator.credentials.request()'. The browser process will respond with a | ||
// CredentialManagerMsg_SendCredential message. | ||
IPC_MESSAGE_ROUTED3(CredentialManagerHostMsg_RequestCredential, | ||
int /* request_id */, | ||
bool /* zero_click_only */, | ||
std::vector<GURL> /* federations */) | ||
|
||
// ---------------------------------------------------------------------------- | ||
// Messages sent from the browser to the renderer | ||
|
||
// Notify the renderer that the browser process has finished processing a | ||
// CredentialManagerHostMsg_NotifyFailedSignedIn message. | ||
IPC_MESSAGE_ROUTED1(CredentialManagerMsg_AcknowledgeFailedSignIn, | ||
int /* request_id */); | ||
|
||
// Notify the renderer that the browser process has finished processing a | ||
// CredentialManagerHostMsg_NotifySignedIn message. | ||
IPC_MESSAGE_ROUTED1(CredentialManagerMsg_AcknowledgeSignedIn, | ||
int /* request_id */); | ||
|
||
// Notify the renderer that the browser process has finished processing a | ||
// CredentialManagerHostMsg_NotifySignedOut message. | ||
IPC_MESSAGE_ROUTED1(CredentialManagerMsg_AcknowledgeSignedOut, | ||
int /* request_id */); | ||
|
||
// Send a credential to the renderer in response to a | ||
// CredentialManagerHostMsg_RequestCredential message. | ||
IPC_MESSAGE_ROUTED2(CredentialManagerMsg_SendCredential, | ||
int /* request_id */, | ||
password_manager::CredentialInfo /* credential */) |
Oops, something went wrong.