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

Side by Side Diff: Source/core/dom/SimpleLifecycleContext.cpp

Issue 18777003: Extract simpler classes for observing context lifecycle and observe Page lifecycle inNavigatorVibra… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Use SimpleLifecycleObserver in addObserver / removeObserver. Created 7 years, 5 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2013 Google Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 * 24 *
25 */ 25 */
26 26
27 #include "config.h" 27 #include "config.h"
28 #include "core/dom/SimpleLifecycleContext.h"
28 29
29 #include "core/workers/WorkerLocation.h" 30 #include "core/dom/SimpleLifecycleNotifier.h"
30
31 #include <wtf/text/WTFString.h>
32 31
33 namespace WebCore { 32 namespace WebCore {
34 33
35 String WorkerLocation::href() const 34 SimpleLifecycleContext::SimpleLifecycleContext()
36 { 35 {
37 return m_url.string();
38 } 36 }
39 37
40 String WorkerLocation::protocol() const 38 SimpleLifecycleContext::~SimpleLifecycleContext()
41 { 39 {
42 return m_url.protocol() + ":";
43 } 40 }
44 41
45 String WorkerLocation::host() const 42 void SimpleLifecycleContext::wasObservedBy(SimpleLifecycleObserver* observer, Si mpleLifecycleObserver::Type type)
46 { 43 {
47 return m_url.port() ? m_url.host() + ":" + String::number(m_url.port()) : m_ url.host(); 44 lifecycleNotifier()->addObserver(observer, type);
48 } 45 }
49 46
50 String WorkerLocation::hostname() const 47 void SimpleLifecycleContext::wasUnobservedBy(SimpleLifecycleObserver* observer, SimpleLifecycleObserver::Type type)
51 { 48 {
52 return m_url.host(); 49 lifecycleNotifier()->removeObserver(observer, type);
53 } 50 }
54 51
55 String WorkerLocation::port() const 52 SimpleLifecycleNotifier* SimpleLifecycleContext::lifecycleNotifier()
56 { 53 {
57 return m_url.port() ? String::number(m_url.port()) : ""; 54 if (!m_lifecycleNotifier)
55 m_lifecycleNotifier = const_cast<SimpleLifecycleContext*>(this)->createL ifecycleNotifier();
56 return m_lifecycleNotifier.get();
58 } 57 }
59 58
60 String WorkerLocation::pathname() const 59 PassOwnPtr<SimpleLifecycleNotifier> SimpleLifecycleContext::createLifecycleNotif ier()
61 { 60 {
62 return m_url.path().isEmpty() ? "/" : m_url.path(); 61 return SimpleLifecycleNotifier::create(this);
63 } 62 }
64 63
65 String WorkerLocation::search() const
66 {
67 return m_url.query().isEmpty() ? emptyString() : "?" + m_url.query();
68 }
69
70 String WorkerLocation::hash() const
71 {
72 return m_url.fragmentIdentifier().isEmpty() ? emptyString() : "#" + m_url.fr agmentIdentifier();
73 }
74
75
76 } // namespace WebCore 64 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698