19fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu/* 29fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * Copyright 2010, The Android Open Source Project 39fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * 49fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * Redistribution and use in source and binary forms, with or without 59fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * modification, are permitted provided that the following conditions 69fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * are met: 79fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * * Redistributions of source code must retain the above copyright 89fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * notice, this list of conditions and the following disclaimer. 99fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * * Redistributions in binary form must reproduce the above copyright 109fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * notice, this list of conditions and the following disclaimer in the 119fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * documentation and/or other materials provided with the distribution. 129fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * 139fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 149fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 159fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 169fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 179fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 189fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 199fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 209fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 219fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 229fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 239fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 249fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu */ 259fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 269fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#ifndef PackageNotifier_h 279fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#define PackageNotifier_h 289fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 299fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#if ENABLE(APPLICATION_INSTALLED) 309fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 319fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#include "PlatformString.h" 329fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#include "Timer.h" 33dd7ee22af4f03672fa823324323466054f19a054Iain Merrick 349fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#include <wtf/HashSet.h> 359fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#include <wtf/Noncopyable.h> 36dd7ee22af4f03672fa823324323466054f19a054Iain Merrick#include <wtf/text/StringHash.h> 379fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 389fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescunamespace WebCore { 399fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 400cae2b1e7dd111cf7081b49cf7411c0066b33cc6Ben Murdochclass PackageNotifier { 410cae2b1e7dd111cf7081b49cf7411c0066b33cc6Ben Murdoch WTF_MAKE_NONCOPYABLE(PackageNotifier); 429fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescupublic: 439fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu PackageNotifier(); 449fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 459fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu typedef void (*Callback)(); 469fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu void setOnResultAvailable(Callback); 479fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 489fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu void addPackageNames(const HashSet<String>& packageNames); 499fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu void addPackageName(const String& packageName); 509fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu void removePackageName(const String& packageName); 519fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 529fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu void requestPackageResult(); 539fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu bool isPackageInstalled(const String& packageName); 549fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 559fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescuprivate: 569fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu void timerFired(Timer<PackageNotifier>*); 579fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 589fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu Callback m_onResultAvailable; 599fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 609fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu HashSet<String> m_packageNames; 619fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu bool m_isInitialized; 629fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu Timer<PackageNotifier> m_timer; 639fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu}; 649fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 659fed475722a5da7e9fac4d78715b17ca5ed29335Andrei PopescuPackageNotifier& packageNotifier(); 669fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 679fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu} 689fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 699fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu#endif 709fed475722a5da7e9fac4d78715b17ca5ed29335Andrei Popescu 71b940ad181c917c781eaab144ed645b7c85dbc94eBruce Beare#endif // PackageNotifier_h 72