blob: 0ca2b5ef040a80ab9f1dd6c58910cec36ce7ee1c [file] [log] [blame]
// Copyright 2015 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.
#ifndef CHROME_INSTALLER_UTIL_SCOPED_USER_PROTOCOL_ENTRY_H_
#define CHROME_INSTALLER_UTIL_SCOPED_USER_PROTOCOL_ENTRY_H_
#include "base/macros.h"
#include "base/memory/scoped_vector.h"
class RegistryEntry;
// Windows 8 shows the "No apps are installed to open this type of link"
// dialog when choosing a default handler for a |protocol| under certain
// circumstances. Under these circumstances, it appears that ensuring the
// existance of the HKCU\Software\Classes\<protocol> key with an empty "URL
// Protocol" value is sufficient to make the dialog contain the usual list of
// registered browsers. This class creates this key and value in its constructor
// if needed, and cleans them up in its destructor if no other values or subkeys
// were created in the meantime. For details, see https://crbug.com/569151.
class ScopedUserProtocolEntry {
public:
explicit ScopedUserProtocolEntry(const wchar_t* protocol);
~ScopedUserProtocolEntry();
private:
ScopedVector<RegistryEntry> entries_;
DISALLOW_COPY_AND_ASSIGN(ScopedUserProtocolEntry);
};
#endif // CHROME_INSTALLER_UTIL_SCOPED_USER_PROTOCOL_ENTRY_H_