| Index: chrome/browser/tab_contents_wrapper.cc
|
| ===================================================================
|
| --- chrome/browser/tab_contents_wrapper.cc (revision 0)
|
| +++ chrome/browser/tab_contents_wrapper.cc (revision 0)
|
| @@ -0,0 +1,49 @@
|
| +// Copyright (c) 2010 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/tab_contents_wrapper.h"
|
| +
|
| +#include "chrome/browser/password_manager/password_manager.h"
|
| +#include "chrome/browser/password_manager_delegate_impl.h"
|
| +#include "chrome/browser/tab_contents/tab_contents.h"
|
| +
|
| +
|
| +TabContentsWrapper::TabContentsWrapper(TabContents* contents)
|
| + : tab_contents_(contents) {
|
| + DCHECK(contents);
|
| + // Stash this in the property bag so it can be retrieved without having to
|
| + // go to a Browser.
|
| + property_accessor()->SetProperty(contents->property_bag(), this);
|
| +}
|
| +
|
| +TabContentsWrapper::~TabContentsWrapper() {
|
| + // Unregister observers (TabContents outlives supporting objects).
|
| + tab_contents()->RemoveNavigationObserver(password_manager_.get());
|
| +}
|
| +
|
| +PropertyAccessor<TabContentsWrapper*>* TabContentsWrapper::property_accessor() {
|
| + return Singleton< PropertyAccessor<TabContentsWrapper*> >::get();
|
| +}
|
| +
|
| +PasswordManager* TabContentsWrapper::GetPasswordManager() {
|
| + if (!password_manager_.get()) {
|
| + // Create the delegate then create the manager.
|
| + password_manager_delegate_.reset(
|
| + new PasswordManagerDelegateImpl(tab_contents()));
|
| + password_manager_.reset(
|
| + new PasswordManager(password_manager_delegate_.get()));
|
| + // Register the manager to receive navigation notifications.
|
| + tab_contents()->AddNavigationObserver(password_manager_.get());
|
| + }
|
| + return password_manager_.get();
|
| +}
|
| +
|
| +TabContentsWrapper* TabContentsWrapper::Clone() {
|
| + TabContents* new_contents = tab_contents()->Clone();
|
| + TabContentsWrapper* new_wrapper = new TabContentsWrapper(new_contents);
|
| + // Instantiate the passowrd manager if it has been instantiated here.
|
| + if (password_manager_.get())
|
| + new_wrapper->GetPasswordManager();
|
| + return new_wrapper;
|
| +}
|
|
|